Obtenez postfix pour transférer le courrier de root


13

J'ai un serveur Ubuntu exécutant postfix. Ce n'est pas le serveur de messagerie de mon domaine.

Chaque fois qu'un travail cron s'exécute pour root, le courrier de sortie n'est pas remis localement, il est envoyé à root@mydomain.com via le serveur de messagerie principal. Ce n'est pas ce que je veux.

Je souhaite que le courrier pour root soit livré localement ou envoyé à anothermail@anotherdomain.com.

J'ai essayé de modifier les deux ~root/.forwardet /etc/aliases(et d'exécuter de nouveaux alias), mais rien n'y fait (je suppose que ces fichiers ne sont vérifiés que lorsque postfix essaie de livrer le courrier localement).

Que puis-je faire?

C’est /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = linux1.mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = linux1.mydomain.com, localhost.linux1.mydomain.com, localhost
relayhost = my.isps.relayhost.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

Éditer:

Lors de l'envoi de courrier à root, cela va dans /var/log/mail.log:

Mar  7 09:39:17 linux1 postfix/pickup[31381]: F3B9C98025E: uid=1000 from=<ct>
Mar  7 09:39:18 linux1 postfix/cleanup[31556]: F3B9C98025E: message-id=<20130307083917.F3B9C98025E@linux1.mydomain.com>
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: from=<ct@mydomain.com>, size=283, nrcpt=1 (queue active)
Mar  7 09:39:18 linux1 postfix/smtp[31558]: F3B9C98025E: to=<root@mydomain.com>, orig_to=<root>, relay=my.isps.relayhost.com[<IP address omitted>]:25, delay=0.72, delays=0.19/0.02/0.27/0.25, dsn=2.0.0, status=sent (250 Ok: queued as A97F5D8126)
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: removed

Le nom "ct" est mon nom d'utilisateur. J'ai généré le texte ci-dessus via cette commande:

echo test | mail -s test root

Le contenu de /etc/mailnameest:

mydomain.com

Le contenu de /etc/aliasesest:

root: anothermail@anotherdomain.com
postmaster:    root

où anothermail@anotherdomain.com est l'endroit où je souhaite que le courrier de root soit transféré.

Le contenu de /etc/hostsme surprend en fait un peu:

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

où "mylinux" est le nom d'hôte d'un système d'exploitation hôte sous lequel linux1 s'exécute en tant que machine virtuelle. Je ne sais pas comment "mylinux" est entré là-dedans. (Mais cela pourrait-il vraiment être la raison de mon problème?)


Pourriez-vous nous fournir vos logs postfix lorsque vous envoyez un mail à root?
Dom

Je l'ai fait dans une modification du message d'origine.
oz1cz

Pourriez-vous nous donner vos fichiers / etc / mailname et / etc / aliases? Vérifiez si / etc / hosts contient le linux1.mydomain.com affecté à 127.0.1.1
Dom

J'ai ajouté les informations au message d'origine.
oz1cz

Selon vos journaux, le courrier a été correctement envoyé à votre relais smtp isp. Je leur demanderais (isp) de vérifier les journaux my.isps.relayhost.com [<adresse IP omise>] pour tout indice (antispam, erreur, ...) sur le problème.

Réponses:


13

Comme d'habitude, vérifiez vos journaux.

Dans votre cas, le démon postfix pense que le courrier n'est pas pour lui et l'envoie sans utiliser /etc/aliases

Vérifiez d'abord votre /etc/hostsfichier: il devrait avoir le nom de votre machine correspondant 127.0.1.1, comme ceci:

127.0.1.1  linux1.mydomain.com  linux1

Vérifiez /etc/mailnameaussi, et cela devrait être cohérent.

Vérifiez votre /etc/aliasespour voir si root (utilisateur) est envoyé à un autre utilisateur et refaites la newaliasescommande.

Et ça devrait marcher!


Cela devrait-il être 127.0.0.1?
Nate

Vous pouvez avoir n'importe quelle adresse dans 127.0.0.0/8, donc 127.0.0.1 fonctionne bien aussi
Dom

J'ai eu un problème similaire alors que je voulais seulement utiliser un relais smarthost pour envoyer des mails: "myhostname" devait être "localhost". Tout le reste a ignoré le fichier d'alias.
Alex

8

Si mydestinationest vide ou ne contient pas, $myhostnamele /etc/aliasessera ignoré car postfix pense que l'e-mail n'est pas une livraison locale et n'appliquera donc pas les alias locaux. Par conséquent, laissez mydestinationla valeur par défaut ( postconf -d mydestinationou supprimez-la main.cf) et les journaux devraient afficher l' to=<...>adresse comme votre alias.


J'utilise un serveur de messagerie externe et mydestinationdoit être vide. Sinon, aucun courrier n'est envoyé.
Corni

1

Dans certaines circonstances (c'est-à-dire lorsque tout le courrier est relayé vers un système externe), il est plus facile de simplement définir la MAILTOvariable dans la crontab de root sur une véritable adresse e-mail. Cela devrait à peu près contourner la livraison traditionnelle à la racine et simplement aller là où vous le souhaitez.

# Root's crontab
MAILTO=someone@example.com
0 0 * * * /usr/bin/somescript

0

Il semble y avoir un problème avec l'ouverture de /root/.forwardpar le démon postfix, au moins sur le système durci (je n'y ai pas creusé). Malgré:

# ls -ld / /root /root/.forward
dr-xr-xr-x. 18 root root  236 Dec  4 00:02 /
dr-xr-x--x. 13 root root 4096 Jan  8 17:45 /root
-rw-r--r--.  1 root root   30 Jan  8 14:51 /root/.forward

L'enfant du démon postfix ne peut pas accéder à .forward:

7603  open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 16
7603  fstat(16, {st_mode=S_IFREG|0644, st_size=1227, ...}) = 0
7603  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f86854fb000
7603  read(16, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1227
7603  close(16)                         = 0
7603  munmap(0x7f86854fb000, 4096)      = 0
7603  geteuid()                         = 89
7603  getegid()                         = 89
7603  geteuid()                         = 89
7603  setresuid(-1, 0, -1)              = 0
7603  setresgid(-1, 0, -1)              = 0
7603  setgroups(1, [0])                 = 0
7603  lstat("/root/.forward", 0x7ffc03f84750) = -1 EACCES (Permission denied)

Je n'ai pas eu le temps de creuser dedans ... L'ajout de l'entrée à /etc/aliasessuivi par newaliasesfonctionne très bien.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.