Ottieni postfix per inoltrare la posta di root


13

Ho un server Ubuntu con Postfix. Non è il server di posta per il mio dominio.

Ogni volta che un cron job viene eseguito per root, la posta in uscita non viene recapitata localmente, ma viene inviata a root@mydomain.com tramite il server di posta principale. Questo non è quello che voglio.

Voglio che la posta per root sia recapitata localmente o inoltrata a anothermail@anotherdomain.com.

Ho provato a modificare sia ~root/.forwarde /etc/aliases(sia eseguendo newalias), ma nulla aiuta (suppongo che questi file vengano controllati solo quando postfix tenta di consegnare la posta localmente).

Cosa posso fare?

Questo è /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

Modificare:

Quando si invia posta alla radice, questo va in /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

Il nome "ct" è il mio nome utente. Ho generato il testo sopra tramite questo comando:

echo test | mail -s test root

Il contenuto di /etc/mailnameè:

mydomain.com

Il contenuto di /etc/aliasesè:

root: anothermail@anotherdomain.com
postmaster:    root

dove anothermail@anotherdomain.com è dove vorrei che la posta di root venisse inoltrata.

Il contenuto di /etc/hostseffettivamente mi sorprende un po ':

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

dove "mylinux" è il nome host di un sistema operativo host in base al quale linux1 funziona come una macchina virtuale. Non sono sicuro di come "mylinux" sia entrato. (Ma potrebbe davvero essere questo il motivo del mio problema?)


Potresti fornirci i tuoi log postfix quando invii una mail a root?
Dom

L'ho fatto in una modifica al post originale.
oz1cz

Potresti darci i tuoi file / etc / mailname e / etc / aliases? Controlla se / etc / hosts contiene linux1.mydomain.com assegnato a 127.0.1.1
Dom

Ho aggiunto le informazioni al post originale.
oz1cz

Secondo i tuoi registri, la posta è stata inviata correttamente al tuo inoltro isp smtp. Chiederei loro (isp) di controllare i log di my.isps.relayhost.com [<indirizzo IP omesso>] per qualsiasi indizio (antispam, errore, ...) sul problema.

Risposte:


13

Come al solito, controlla i tuoi registri.

Nel tuo caso, il demone postfix pensa che la posta non sia adatta e la invia senza utilizzarla /etc/aliases

Prima controlla il tuo /etc/hostsfile: dovrebbe avere il nome della tua macchina corrispondente 127.0.1.1, in questo modo:

127.0.1.1  linux1.mydomain.com  linux1

Controlla anche il tuo /etc/mailnamee dovrebbe essere coerente.

Verifica /etc/aliasesse il root (utente) viene inviato a un altro utente e ripeti il newaliasescomando.

E dovrebbe funzionare!


Dovrebbe essere 127.0.0.1?
Nate,

Puoi avere qualsiasi indirizzo in 127.0.0.0/8, quindi anche 127.0.0.1 funziona bene
Dom

Ho avuto un problema simile mentre volevo solo usare un relay smarthost per inviare mail: "myhostname" doveva essere "localhost". Qualcos'altro ha saltato il file alias.
Alex

8

Se mydestinationè vuota o non contiene $myhostnamequindi l' /etc/aliasessaranno ignorate perché postfix pensa che la posta elettronica non è una consegna locale e quindi non applicare i alias locali. Quindi, lascia mydestinationil valore predefinito ( postconf -d mydestinationo rimuovilo da main.cf) ei registri dovrebbero mostrare l' to=<...>indirizzo come alias.


Sto usando un server di posta esterno e mydestinationdeve essere vuoto. Altrimenti non viene inviata posta.
Corni,

1

In alcune circostanze (ad esempio quando tutta la posta viene inoltrata a un sistema esterno), è più semplice impostare la MAILTOvariabile nel crontab di root su un vero indirizzo e-mail. Questo dovrebbe praticamente aggirare la consegna tradizionale alla radice e farlo andare dove vuoi.

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

0

Sembra esserci qualche problema con l'apertura di /root/.forwarddaemon postfix, almeno sul sistema rinforzato (non ho scavato in esso). Nonostante:

# 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

Il figlio del demone postfix non è in grado di accedere a .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)

Non ho avuto il tempo di scavare in esso ... L'aggiunta della voce /etc/aliasesseguita da newaliasesfunziona bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.