1 votes

Configuration de Postfix pour le courrier électronique sortant via SMTP avec livraison à la racine locale pour les rapports cron.

J'ai récemment dû diagnostiquer un couple de serveurs utilisant Postfix qui envoyait par courriel les résultats des cronjobs rsync lorsqu'ils retournaient une valeur non-OK.

Pendant que Postfix envoyait un email aux destinataires en cas d'échec de rsync, j'ai remarqué que le STDOUT du cronjob n'était pas relayé localement et correctement vers le mail root. Il s'agit de la vieille boîte Ubuntu exécutant Postfix 2 :

Dec  3 09:30:01 server01 postfix/pickup[10499]: B5A2B780C7F: uid=0 from=<root>
Dec  3 09:30:01 server01 postfix/cleanup[23133]: B5A2B780C7F: message-id=<20181205093001.B5A2B780C7F@server.fqdn.tld>
Dec  3 09:30:01 server01 postfix/qmgr[23780]: B5A2B780C7F: from=<root@server.fqdn.tld>, size=1969, nrcpt=1 (queue active)
Dec  3 09:30:02 server01 postfix/smtp[23135]: B5A2B780C7F: to=<root@localhost.fqdn.tld>, orig_to=<root>, relay=smtp.fqdn.tld[1.2.3.4]:25, delay=0.7, delays=0.26/0.01/0.02/0.42, dsn=2.6.0, status=sent (250 2.6.0 <20181205093001.B5A2B780C7F@server.fqdn.tld> [InternalId=244571470] Queued mail for delivery)
Dec  3 09:30:02 server01 postfix/qmgr[23780]: B5A2B780C7F: removed
Dec  3 10:00:06 server01 postfix/pickup[15878]: 5D0B8780C7F: uid=0 from=<root>
Dec  3 10:00:06 server01 postfix/cleanup[22344]: 5D0B8780C7F: message-id=<20181205100006.5D0B8780C7F@server.fqdn.tld>
Dec  3 10:00:06 server01 postfix/qmgr[23780]: 5D0B8780C7F: from=<root@server.fqdn.tld>, size=2198, nrcpt=1 (queue active)

L'autre serveur, une nouvelle version de CentOS avec Postfix 3, enregistrait les erreurs de manière légèrement différente :

Dec  3 22:02:48 server02 postfix/pickup[20144]: 9491960138: uid=0 from=<root>
Dec  3 22:02:48 server02 postfix/cleanup[26411]: 9491960138: message-id=<20181203220248.9491960138@server02.fqdn.tld>
Dec  3 22:02:48 server02 postfix/qmgr[21628]: 9491960138: from=<root@fqdn.tld>, size=2541, nrcpt=1 (queue active)
Dec  3 22:02:48 server02 postfix/cleanup[26411]: 98BF0600D6: message-id=<20181203220248.9491960138@server02.fqdn.tld>
Dec  3 22:02:48 server02 postfix/qmgr[21628]: 98BF0600D6: from=<root@fqdn.tld>, size=2689, nrcpt=1 (queue active)
Dec  3 22:02:48 server02 postfix/local[26414]: 9491960138: to=<root@localhost>, orig_to=<root>, relay=local, delay=167, delays=167/0.01/0/0, dsn=2.0.0, status=sent (forwarded as 98BF0600D6)
Dec  3 22:02:48 server02 postfix/qmgr[21628]: 9491960138: removed
Dec  3 22:02:48 server02 postfix/local[26414]: 98BF0600D6: to=<root@localhost>, orig_to=<root>, relay=local, delay=0.02, delays=0/0/0/0.01, dsn=5.4.6, status=bounced (mail forwarding loop for root@localhost)
Dec  3 22:02:48 server02 postfix/cleanup[26411]: 9D80F60139: message-id=<20181203220248.9D80F60139@server02.fqdn.tld>
Dec  3 22:02:48 server02 postfix/qmgr[21628]: 9D80F60139: from=<>, size=4684, nrcpt=1 (queue active)
Dec  3 22:02:48 server02 postfix/cleanup[26411]: 9E9ED6013A: message-id=<20181203220248.9D80F60139@server02.fqdn.tld>
Dec  3 22:02:48 server02 postfix/bounce[26416]: 98BF0600D6: sender non-delivery notification: 9D80F60139
Dec  3 22:02:48 server02 postfix/qmgr[21628]: 98BF0600D6: removed
Dec  3 22:02:48 server02 postfix/qmgr[21628]: 9E9ED6013A: from=<>, size=4832, nrcpt=1 (queue active)
Dec  3 22:02:48 server02 postfix/local[26415]: 9D80F60139: to=<root@localhost>, orig_to=<root@fqdn.tld>, relay=local, delay=0.01, delays=0/0/0/0, dsn=2.0.0, status=sent (forwarded as 9E9ED6013A)
Dec  3 22:02:48 server02 postfix/qmgr[21628]: 9D80F60139: removed
Dec  3 22:02:48 server02 postfix/local[26414]: 9E9ED6013A: to=<root@localhost>, orig_to=<root@fqdn.tld>, relay=local, delay=0.01, delays=0/0/0/0, dsn=5.4.6, status=bounced (mail forwarding loop for root@localhost)
Dec  3 22:02:48 server02 postfix/qmgr[21628]: 9E9ED6013A: removed
Dec  3 22:30:05 server02 postfix/pickup[20144]: C776360138: uid=0 from=<root>
Dec  3 22:30:05 server02 postfix/cleanup[10175]: C776360138: message-id=<20181203223005.C776360138@server02.fqdn.tld>
Dec  3 22:30:05 server02 postfix/qmgr[21628]: C776360138: from=<root@fqdn.tld>, size=2172, nrcpt=1 (queue active)
Dec  3 22:30:05 server02 postfix/cleanup[10175]: CBB5D600D6: message-id=<20181203223005.C776360138@server02.fqdn.tld>
Dec  3 22:30:05 server02 postfix/qmgr[21628]: CBB5D600D6: from=<root@fqdn.tld>, size=2320, nrcpt=1 (queue active)
Dec  3 22:30:05 server02 postfix/local[10178]: C776360138: to=<root@localhost>, orig_to=<root>, relay=local, delay=4.1, delays=4.1/0.01/0/0, dsn=2.0.0, status=sent (forwarded as CBB5D600D6)
Dec  3 22:30:05 server02 postfix/qmgr[21628]: C776360138: removed
Dec  3 22:30:05 server02 postfix/local[10178]: CBB5D600D6: to=<root@localhost>, orig_to=<root>, relay=local, delay=0.02, delays=0/0/0/0.01, dsn=5.4.6, status=bounced (mail forwarding loop for root@localhost)
Dec  3 22:30:05 server02 postfix/cleanup[10175]: D04C460139: message-id=<20181203223005.D04C460139@server02.fqdn.tld>
Dec  3 22:30:05 server02 postfix/qmgr[21628]: D04C460139: from=<>, size=4315, nrcpt=1 (queue active)
Dec  3 22:30:05 server02 postfix/cleanup[10175]: D14146013A: message-id=<20181203223005.D04C460139@server02.fqdn.tld>
Dec  3 22:30:05 server02 postfix/bounce[10180]: CBB5D600D6: sender non-delivery notification: D04C460139
Dec  3 22:30:05 server02 postfix/qmgr[21628]: CBB5D600D6: removed
Dec  3 22:30:05 server02 postfix/qmgr[21628]: D14146013A: from=<>, size=4463, nrcpt=1 (queue active)
Dec  3 22:30:05 server02 postfix/local[10179]: D04C460139: to=<root@localhost>, orig_to=<root@fqdn.tld>, relay=local, delay=0.01, delays=0/0/0/0, dsn=2.0.0, status=sent (forwarded as D14146013A)
Dec  3 22:30:05 server02 postfix/qmgr[21628]: D04C460139: removed
Dec  3 22:30:05 server02 postfix/local[10178]: D14146013A: to=<root@localhost>, orig_to=<root@fqdn.tld>, relay=local, delay=0.01, delays=0/0/0/0, dsn=5.4.6, status=bounced (mail forwarding loop for root@localhost)
Dec  3 22:30:05 server02 postfix/qmgr[21628]: D14146013A: removed

Ces installations Postfix étaient en mesure d'envoyer des e-mails via un relais SMTP aux utilisateurs du domaine de l'entreprise. Mais comment réparer les rapports de la racine locale qui ne sont pas livrés localement ?

1voto

Chris Woods Points 386

(Dans ces exemples, j'ai rendu les noms d'hôtes anonymes et changé les domaines externes en fqdn.tld ).

Conditions préalables :

Sur les deux serveurs,

  • /etc/aliases contenait déjà un root: root entrée
  • /etc/postfix/virtual contenu root root@localhost y
  • /etc/postfix/generic contenait déjà des alias d'envoi pour les machines (par ex, root@server02.fqdn.tld server02@fqdn.tld

En aliases , virtual y generic nécessitent un postmap après tout changement, car Postfix utilise la version hachée de la base de données lors de son exécution.

La configuration originale de Postfix :

relayhost = smtp.fqdn.tld
myhostname = server01.fqdn.tld
mydomain = fqdn.tld
myorigin = $myhostname
mydestination = $myhostname localhost.$myhostname localhost
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

mynetworks_style = host
inet_interfaces = loopback-only
mydestination = $myhostname, localhost.$mydomain, $mydomain, fqdn.tld, fqdn2.tld
alias_maps = hash:/etc/aliases
virtual_alias_maps = hash:/etc/postfix/virtual
smtp_generic_maps = hash:/etc/postfix/generic

Alors que cela signifiait que la boîte était capable d'envoyer du courrier à des destinataires du domaine de l'entreprise, tous les courriels locaux étaient envoyés à la boîte aux lettres racine ( /var/spool/mail/root ) ne s'en sortaient pas.

J'ai repéré une erreur précoce dans le myorigin y mydestination (elles étaient trop explicites, et mentionnaient également des domaines externes, ce qui a pu perturber les tentatives de livraison locale), je les ai donc révisées. J'ai également nettoyé les autres options.

Voici la configuration de travail que j'ai adoptée pour la boîte Postfix 2.7, avec quelques commentaires pour d'autres choses utiles (comme la définition explicite des interfaces IPv4/IPv6, ou la désactivation de la compatibilité avec la configuration antérieure de Postfix 3. Heureusement, la boîte Postfix 3.3 fonctionne aussi avec la même configuration.

relayhost = smtp.fqdn.tld
myhostname = server01.fqdn.tld
mydomain = fqdn.tld
myorigin = $myhostname
mydestination = $myhostname, localhost.$mydomain, localhost
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

mynetworks_style = host
# host makes the mynetworks unnecessary - defining mynetworks overrides mynetworks_style
#mynetworks = 127.0.0.0/8, 1.2.3.4/32
# http://www.postfix.org/BASIC_CONFIGURATION_README.html

inet_interfaces = loopback-only
#inet_interfaces = 127.0.0.1, 1.2.3.4,
# ::1
# https://serverfault.com/questions/452350/how-to-completely-disable-ipv6-for-loopback-interface-on-rhel-5-6

alias_maps = hash:/etc/aliases
virtual_alias_maps = hash:/etc/postfix/virtual
smtp_generic_maps = hash:/etc/postfix/generic

# compatibility_level disables postfix 2 backward compatibility in Postfix 3.
# http://www.postfix.org/postconf.5.html#compatibility_level
#compatibility_level = 2

Sur la boîte de Postfix 3, j'ai fini par utiliser la même configuration de base, mais avec les paramètres suivants compatibility_level = 2 non commentée.

Il y a quelques différences d'interprétation dans certaines variables, et des changements dans les comportements par défaut d'autres, en particulier des choses comme mynetworks_style . Le réglage des réseaux est important pour éviter que la machine ne devienne un relais ouvert involontaire.

Fixer le [mydestination][1] est importante - elle indique à la machine les domaines pour lesquels elle effectuera des livraisons locales au lieu de les relayer à une autre machine via SMTP. (Voir Configuration de base de Postfix pour des exemples).

Si vous voulez vérifier qu'il fonctionne, suivez votre journal de courrier :

tail -fn 100 /var/log/maillog 又は mail.log sur certaines machines)

Pour tous les rapports cron, vous devriez maintenant voir quelque chose comme

Dec  4 14:04:50 server01 postfix/pickup[25672]: 1B2566011A: uid=0 from=<root>
Dec  4 14:04:50 server01 postfix/cleanup[19854]: 1B2566011A: message-id=<20181205140450.1B2566011A@server01.fqdn.tld>
Dec  4 14:04:50 server01 postfix/qmgr[29434]: 1B2566011A: from=<root@server01.fqdn.tld>, size=2320, nrcpt=1 (queue active)
Dec  4 14:04:50 server01 postfix/local[19859]: 1B2566011A: to=<root@server01.fqdn.tld>, orig_to=<root>, relay=local, delay=289, delays=289/0.01/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Dec  4 14:04:50 server01 postfix/qmgr[29434]: 1B2566011A: removed

En relais=local y status=sent (livré) est la clé, au lieu de status=bounced ou toute référence à un serveur SMTP (par ex. relay=smtp.fqdn.tld[1.2.3.4]:25 ). Les rapports locaux vers la boîte aux lettres racine provenant de choses comme les sorties cron doivent toujours être livrés localement (relais local).

Une fois que la configuration est correcte, je recommande d'utiliser mutt ( apt-get install mutt / yum install mutt ) pour vérifier la boîte aux lettres racine : mutt -f /var/spool/mail/root .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X