J'ai un serveur Ubuntu en cours d'exécution postfix. Ce n'est pas le serveur de messagerie pour mon domaine.
Chaque fois qu'un travail cron fonctionne pour racine, le courrier de sortie n'est pas livré localement, mais elle est envoyée à [email protected] via le serveur de messagerie principal. Ce n'est pas ce que je veux.
Je souhaite que le courrier soit root soit livré localement ou transmis à [email protected].
J'ai essayé de modifier les deux ~root/.forward
et /etc/aliases
(et exécution de nouveauxaliases), mais rien ne aide (je suppose que ces fichiers ne sont cochés que lorsque Postfix tente 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
Edit :
Lors de l'envoi de courrier à root, cela entre 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=<[email protected]>
Mar 7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: from=<[email protected]>, size=283, nrcpt=1 (queue active)
Mar 7 09:39:18 linux1 postfix/smtp[31558]: F3B9C98025E: to=<[email protected]>, 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/mailname
est:
mydomain.com
Le contenu de /etc/aliases
est:
root: [email protected]
postmaster: root
où autre @anotherdomain.com est où j'aimerais que le courrier de la racine soit transmis.
Le contenu de /etc/hosts
réellement me surprend un peu:
127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1
où "myllinux" est le nom d'hôte d'un système d'exploitation hôte sous lequel Linux1 fonctionne comme une machine virtuelle. Je ne sais pas comment "MyLinux" est arrivé là-bas. (Mais cela pourrait-il vraiment être la raison de mon problème?)
Si mydestination
est vide ou ne contient pas $myhostname
puis le /etc/aliases
Sera ignoré car Postfix pense que l'e-mail n'est pas une livraison locale et n'appliquera donc pas les alias locaux. Donc, laissez mydestination
à la valeur par défaut (postconf -d mydestination
ou retirez-le de main.cf
) et les journaux doivent montrer le to=<...>
comme votre adresse aliasée.
Dans certaines circonstances, (c'est-à-dire où tout le courrier est relayé à un système externe), il est plus facile de définir simplement la variable MAILTO
de la racine Crontab à une adresse électronique réelle. Cela devrait plutôt contourner la livraison traditionnelle à la racine et le faire simplement aller où vous voulez.
# Root's crontab
[email protected]
0 0 * * * /usr/bin/somescript
Il semble y avoir un problème avec l'ouverture de /root/.forward
Par postfix Daemon, au moins sur le système durci (je ne l'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 n'est pas en mesure d'accéder .Porfier:
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'avais pas le temps de creuser dedans ... Ajout d'une entrée à /etc/aliases
suivi de newaliases
fonctionne bien.