web-dev-qa-db-fra.com

Obtenez Postfix pour transférer le courrier de la racine

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?)

13
oz1cz

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.

8
ColinM

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
1
Dale Anderson

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.

0
r2oro