Annexes:ConfigurationPostfix
Page dédiée à la configuration de POSTFIX pour l'envoie des mails de dbSQWare.
Sommaire
Généralités
Limites de cette section
Cette procédure présente des scénarii d'envoie de mail par et depuis la machine dbSQWare.
Nous partons du principe que vous avez soit installé l'OVF que nous fournissons soit suivi la procédure d'installation du socle.
Cela permet d'être certains que l'ensemble des paquets nécessaires sont installés.
Si vous avez des habitudes de travail, de configuration, ou d'autres outils dans vos process n'hésitez pas à les appliquer et, ou les utiliser.
Logique technique
La mise en œuvre que nous vous proposons est la suivante :
- La machine hébergeant dbSQWare possède un service Postfix se connectant à un relais SMTP avec un compte authentifié, suivre Relais STMP externe authentifié
- Les machines de base de données possède un service Postfix se connectant à la machine hébergeant dbSQWare comme serveur relais, suivre : Relais STMP interne dbSQWare.
Variantes :
- Si vous utilisez pour tous vos services un relais en interne, configurez la VM dbSQWare et les hôtes SGBD en suivant : Relais STMP interne
Rappel guide de lecture
Le plus souvent on essaye de vous dire qui lance la commande et sur quel hôte :
- Si l'utilisateur dbsqware lance une action sur la machine dbsqware on notera From : dbsqware@sqwarebox
- Si c'est avec l'utilisateur root depuis n'importe quelle machine on notera From : root@anyserver
- Si on peut le faire avec n'importe quel utilisateur ayant les scripts dbsqware on notera From : onedbsqwareuser@anyserver
Par exemple pour redémarrer le serveur :
1 # From : dbsqware@sqwarebox
2 sudo shutdown -r now
3
4 # From : root@anyserver
5 shutdown -r now
Liens utiles
Voici l'ensemble des sites de références pour suivre l'état de votre service de messagerie :
- MXToolBox : https://mxtoolbox.com/
- SpfToolBox : https://spftoolbox.com/
- SPAMHaus project : https://www.spamhaus.org/
Installation de Postfix
Work In Progress (normalement c'est déjà installé)
Mise en service Postfix
WIP
Relais STMP authentifié
Vous devez changer le paramètre relayhost dans main.cf :
vi /etc/postfix/main.cf [..] # The relayhost parameter specifies the default host to send mail to # no relayhost is given, mail is routed directly to the destination. #relayhost = $mydomain #relayhost = [gateway.my.domain] #relayhost = [mailserver.isp.tld] #relayhost = uucphost #relayhost = [an.ip.add.ress] relayhost = [fqdn.yourhost.tld]:25 #ligne à ajouter note : le port peut changer [..]
Relais STMP "public" (non authentifié)
Comme précédemment vous devez changer le paramètre relayhost dans main.cf :
vi /etc/postfix/main.cf [..] # The relayhost parameter specifies the default host to send mail to # no relayhost is given, mail is routed directly to the destination. #relayhost = $mydomain #relayhost = [gateway.my.domain] #relayhost = [mailserver.isp.tld] #relayhost = uucphost #relayhost = [an.ip.add.ress] relayhost = [fqdn.yourhost.tld]:25 #ligne à ajouter note : le port peut changer [..]
Votre relais est la sqwarebox
Si votre sqwarebox est correctement paramétrée et envoie déjà des mails nous pouvez l'utiliser comme relais interne de vos serveur SGDB.
Vous devrez vérifier l'ouverture du port souhaité, par défaut c'est le port 25.
Pour ce faire vous pouvez mettre le fqdn de votre sqwarebox à la place de [fqdn.yourhost.tld], sur vos serveurs SGBD.
Vous devrez tout de même mettre à jour les paramètres inet_interfaces et mynetworks_style dans le main.cf de la sqwarebox :
vi /etc/postfix/main.cf [..] # RECEIVING MAIL # The inet_interfaces parameter specifies the network interface # addresses that this mail system receives mail on. By default, # the software claims all active interfaces on the machine. The # parameter also controls delivery of mail to user@[ip.address]. # # See also the proxy_interfaces parameter, for network addresses that # are forwarded to us via a proxy or network address translator. # # Note: you need to stop/start Postfix when this parameter changes. # inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost #inet_interfaces = localhost [..] # TRUST AND RELAY CONTROL # The mynetworks parameter specifies the list of "trusted" SMTP # clients that have more privileges than "strangers". # # In particular, "trusted" SMTP clients are allowed to relay mail # through Postfix. See the smtpd_recipient_restrictions parameter # in postconf(5). # # You can specify the list of "trusted" network addresses by hand # or you can let Postfix do it for you (which is the default). # # By default (mynetworks_style = subnet), Postfix "trusts" SMTP # clients in the same IP subnetworks as the local machine. # On Linux, this works correctly only with interfaces specified # with the "ifconfig" command. # # Specify "mynetworks_style = class" when Postfix should "trust" SMTP # clients in the same IP class A/B/C networks as the local machine. # Don't do this with a dialup site - it would cause Postfix to "trust" # your entire provider's network. Instead, specify an explicit # mynetworks list by hand, as described below. # # Specify "mynetworks_style = host" when Postfix should "trust" # only the local machine. # #mynetworks_style = class mynetworks_style = subnet #mynetworks_style = host [..]
Modification d'une configuration existante
Les modifications et manipulations présentées dans cette section sont à faire avec l'utilisateur root.
On partira du principe que le service Postfix est fonctionnel et que l'envoie de mail fonctionne, ou fonctionnait.
Vérification de la configuration actuelle
Pour vérifier quel est le relayhost configuré sur le serveur :
cat /etc/postfix/main.cf | grep relayhost # The relayhost parameter specifies the default host to send mail to # no relayhost is given, mail is routed directly to the destination. #relayhost = $mydomain #relayhost = [gateway.my.domain] #relayhost = [mailserver.isp.tld] #relayhost = uucphost #relayhost = [an.ip.add.ress] relayhost = [fqdn.yourhost.tld]:587
Pour vérifier la configuration sasl sur le serveur :
cat /etc/postfix/main.cf | grep smtp_sasl smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous
Pour vérifier les restrictions sur l'envoi vers et depuis le serveur :
cat /etc/postfix/main.cf | grep smtpd_sender_restrictions -A3 smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_reverse_client_hostname
Pour vérifier si la configuration de l'authentification sur le serveur :
ll /etc/postfix/* | grep passwd -rw-r--r-- 1 root root 54 Nov 19 09:51 /etc/postfix/sasl_passwd -rw-r--r-- 1 root root 12288 Nov 19 09:52 /etc/postfix/sasl_passwd.db
Changements sur le relais SMTP
WIP
Changement de compte
WIP
Changement de mot de passe
WIP
Actions de maintenance
Envoyer un mail de test
Avec les scripts dbSQWare
dbSQWare envoi les mails aux adresses que vous avez paramétrer avec la variable gvsqw_GlobalMail, pour vérifier :
echo $gvsqw_GlobalMail
Pour tester l'envoie de mail via nos scripts, sur tous les serveurs avec nos scripts dans tools vous avez le script sqw<moteur>_TestSendmail.ksh
# From onedbsqwareuser@anyserver dbsqware@srvdbsqware:/home/dbsqware (SQWareCentral) $ # too total 60 drwxr-x--- 2 dbsqware dba 4096 Feb 23 14:51 . drwxr-x--- 16 dbsqware dba 4096 Feb 23 14:51 .. -rwxr-x--- 1 dbsqware dba 3052 Feb 23 14:51 sqwctl_BackupCustom.ksh -rwxr-x--- 1 dbsqware dba 1784 Feb 23 14:51 sqwctl_DebugFailAsyncFiles.ksh -rwxr-x--- 1 dbsqware dba 17427 Feb 23 14:51 sqwctl_ExportDataCapacity.ksh -rwxr-x--- 1 dbsqware dba 13038 Feb 23 14:51 sqwctl_ExportDataDemo.ksh lrwxrwxrwx 1 dbsqware dba 40 Jan 2 2022 sqwctl_TestMySQL.ksh -> ../../generic/tools/sqwgen_TestMySQL.ksh lrwxrwxrwx 1 dbsqware dba 43 Jan 2 2022 sqwctl_TestSendmail.ksh -> ../../generic/tools/sqwgen_TestSendmail.ksh -rwxr-x--- 1 dbsqware dba 6974 Feb 23 14:51 sqwctl_UpdateDemo.ksh dbsqware@srvdbsqware:/home/dbsqware/dbSQWare/SQWareCentral/tools (SQWareCentral) $ # ./sqwctl_TestSendmail.ksh Sourcing sqwctl_Global.lib v2025.01 SQWareCentral (dbSQWare) ... eval global vars: gvsqw_RsyncDefaultUser="$gvsqw_UserExec@RsyncHost" => gvsqw_RsyncDefaultUser=dbsqware@RsyncHost Log generated in /home/dbsqware/admin/SQWareCentral/logs/TestSendmail/TestSendmail_20250225_143050_485199.log on srvdbsqware ... Run check config dbSQWare and sendmail host=srvdbsqware : 2025-02-25 14:30:50 __________________________________________________________________ Program informations SqwVersion=2025.01 / 2025.01 Copyright 2007-2025, dbSQWare (www.dbsqware.com) Linux srvdbsqware 5.14.0-503.19.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 19 12:55:03 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux gvsqw_GenPath=/home/dbsqware/dbSQWare/SQWareCentral/tools Path=/home/dbsqware/dbSQWare/SQWareCentral/tools ./sqwctl_TestSendmail.ksh dbsqware@srvdbsqware sqwctl_TestSend,dbsqware ./sqwctl_TestSendmail.ksh `-pstree -aul 485199 __________________________________________________________________ SHELL=/bin/bash [..résultats omis..] _=/usr/bin/env Summary of returns: END_TRT Code: 0 check config dbSQWare and sendmail host=srvdbsqware --> 2025-02-25 14:30:50 Job check config dbSQWare and sendmail host=srvdbsqware proceeded successfully Sending mail html by sendmail at <$gvsqw_GlobalMail> Begining : 2025-02-25 14:30:50 End : 2025-02-25 14:30:50 Duration : 00:00:00
Avec une commande autonome
Selon la configuration de votre serveur vous devrez peut-être installer un paquet avec la commande mail (ou équivalent : email, s-nail, mailx, ...)
1 # From anyuser@anyserver
2
3 echo "Test email by `whoami` the `date`" | mail -s "Test from `hostname`" nom.prenom@domain.tld
Lister l'état du service
Lors vous vérifié le statu du service Postfix, systemctl affiche également la fin de la log en cours.
1 dbsqware@srvdbsqware04:/home/dbsqware (SQWareCentral) $
2 #
3 systemctl status postfix
4 ● postfix.service - Postfix Mail Transport Agent
5 Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; preset: disabled)
6 Active: active (running) since Thu 2025-01-30 08:58:29 CET; 1h 43min ago
7 Process: 1217216 ExecStartPre=/usr/sbin/restorecon -R /var/spool/postfix/pid (code=exited, status=0/SUCCESS)
8 Process: 1217217 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
9 Process: 1217219 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
10 Process: 1217220 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
11 Main PID: 1217289 (master)
12 Tasks: 4 (limit: 23156)
13 Memory: 4.8M
14 CPU: 1.105s
15 CGroup: /system.slice/postfix.service
16 ├─1217289 /usr/libexec/postfix/master -w
17 ├─1217291 qmgr -l -t unix -u
18 ├─1217418 tlsmgr -l -t unix -u
19 └─1291514 pickup -l -t unix -u
20
21 Jan 30 08:59:09 srvdbsqware04 postfix/pickup[1217290]: 2DD6110F: uid=1000 from=<dbsqware>
22 Jan 30 08:59:09 srvdbsqware04 postfix/cleanup[1217415]: 2DD6110F: message-id=<20250130075909.2DD6110F@srvdbsqware04.dbsqware.local>
23 Jan 30 08:59:09 srvdbsqware04 postfix/qmgr[1217291]: 2DD6110F: from=<sender@dbsqware.org>, size=415, nrcpt=1 (queue active)
24 Jan 30 08:59:09 srvdbsqware04 postfix/smtp[1217417]: 2DD6110F: to=<nom.prenom@dbsqware.com>, relay=smtp.pro-smtp.fr[217.171.20.70]:587, delay=0.55, delays=0.04/0.08/0.17/0.27, dsn=2.0.0, status=sent (25>
25 Jan 30 08:59:09 srvdbsqware04 postfix/qmgr[1217291]: 2DD6110F: removed
26 Jan 30 09:05:17 srvdbsqware04 postfix/pickup[1217290]: 28E9A10F: uid=1000 from=<dbsqware>
27 Jan 30 09:05:17 srvdbsqware04 postfix/cleanup[1218206]: 28E9A10F: message-id=<20250130080517.28E9A10F@srvdbsqware04.dbsqware.local>
28 Jan 30 09:05:17 srvdbsqware04 postfix/qmgr[1217291]: 28E9A10F: from=<sender@dbsqware.org>, size=409, nrcpt=1 (queue active)
29 Jan 30 09:05:17 srvdbsqware04 postfix/smtp[1218208]: 28E9A10F: to=<toarandom@here.fr>, relay=smtp.pro-smtp.fr[217.171.20.70]:587, delay=0.71, delays=0.06/0.06/0.28/0.32, dsn=2.0.0, status=sent (250 2.0.>
30 Jan 30 09:05:17 srvdbsqware04 postfix/qmgr[1217291]: 28E9A10F: removed
31 lines 1-27/27 (END)
Logs en tant réel
Les logs de Postfix sont situés dans /var/log/maillog
Lors de vos manipulations pour voir la log en temps réel dans une autre fenêtre :
1 # From : dbsqware@sqwarebox
2 sudo tail -f /var/log/maillog
3
4 # From : root@anyserver
5 tail -f /var/log/maillog
Gestion de la file d'attente
WIP
Purger toute les files d'attentes
1 # From : dbsqware@sqwarebox
2 sudo postsuper -d ALL
3
4 # From : root@anyserver
5 postsuper -d ALL
Purger la file d'attente defered postfix
Pendant que vous mettez en place la configuration si vous envoyez des mails de tests et qu'il ne partent pas vous allez remplir la file d'attente "defered".
Pensez à la vider sinon lorsque la configuration sera fonctionnelle tous ces mails de tests vont partir d'un coup.
1 # From : dbsqware@sqwarebox
2 sudo postsuper -d ALL defered
3
4 # From : root@anyserver
5 postsuper -d ALL defered
Recharger ou redémarrer Postfix
Recharger la configuration de Postfix.
1 # From : dbsqware@sqwarebox
2 sudo systemctl reload postfix
3
4 # From : root@anyserver
5 systemctl reload postfix
Redémarrer le service Postfix.
1 # From : dbsqware@sqwarebox
2 sudo systemctl restart postfix
3
4 # From : root@anyserver
5 systemctl restart postfix