Erhalten Sie Postfix, um die Mail von root weiterzuleiten

12

Ich habe einen Ubuntu-Server mit Postfix. Es ist nicht der Mailserver für meine Domain.

Wenn ein Cron-Job für root ausgeführt wird, wird die Ausgabemail nicht lokal zugestellt, sondern über den Haupt-Mailserver an [email protected] gesendet. Das will ich nicht.

Ich möchte, dass Mail für root entweder lokal zugestellt oder an [email protected] weitergeleitet wird.

Ich habe versucht , beide zu modifizieren ~root/.forwardund /etc/aliases(Laufen newaliases), aber nichts hilft (Ich denke , diese Dateien werden nur geprüft , wenn Postfix versucht Mail lokal zu liefern).

Was kann ich tun?

Das ist /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

Bearbeiten:

Wenn Sie E-Mails an root senden, gehen Sie folgendermaßen vor /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

Der Name "ct" ist mein Benutzername. Ich habe den obigen Text mit diesem Befehl generiert:

echo test | mail -s test root

Der Inhalt von /etc/mailnameist:

mydomain.com

Der Inhalt von /etc/aliasesist:

root: [email protected]
postmaster:    root

Wo [email protected] ist, wohin soll die Mail von root weitergeleitet werden?

Der Inhalt von /etc/hostsüberrascht mich tatsächlich ein wenig:

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

Dabei ist "mylinux" der Hostname eines Host-Betriebssystems, unter dem linux1 als virtuelle Maschine ausgeführt wird. Ich bin nicht sicher, wie "Mylinux" da reingekommen ist. (Aber könnte das wirklich der Grund für mein Problem sein?)

oz1cz
quelle
Können Sie uns Ihre Postfix-Protokolle zur Verfügung stellen, wenn Sie eine Mail an root senden?
Dom
Ich habe dies in einer Bearbeitung des ursprünglichen Beitrags getan.
Oz1cz
Können Sie uns Ihre Dateien / etc / mailname und / etc / aliases mitteilen? Überprüfen Sie, ob / etc / hosts die Datei linux1.meinedomain.com enthält, die 127.0.1.1
Dom
Ich habe die Informationen zum ursprünglichen Beitrag hinzugefügt.
Oz1cz
Ihren Protokollen zufolge wurde die E-Mail korrekt an Ihr ISP-SMTP-Relay gesendet. Ich würde sie (isp) bitten, die Protokolle von my.isps.relayhost.com [<IP-Adresse ausgelassen>] auf Hinweise (Antispam, Fehler, ...) zu dem Problem zu überprüfen.

Antworten:

13

Überprüfen Sie wie üblich Ihre Protokolle.

In Ihrem Fall denkt der Postfix-Daemon, dass die Mail nicht dafür ist, und sendet sie ohne Verwendung von /etc/aliases

Überprüfen Sie zuerst Ihre /etc/hostsDatei: Ihr Computername sollte 127.0.1.1 entsprechen: 127.0.1.1 linux1.mydomain.com linux1

Überprüfen Sie /etc/mailnameauch Ihre , und es sollte konsistent sein.

Überprüfen Sie /etc/aliases, ob der Root-Benutzer an andere Personen gesendet wurde, und wiederholen Sie den newaliasesBefehl.

Und es sollte funktionieren!

Dom
quelle
Sollte das sein 127.0.0.1?
Nate
Sie können jede Adresse in 127.0.0.0/8 haben, so dass 127.0.0.1 auch gut funktioniert
Dom
Ich hatte ein ähnliches Problem, als ich nur ein Smarthost-Relay zum Versenden von Mails verwenden wollte: "myhostname" musste "localhost" sein. Alles andere übersprang die Aliase-Datei.
Alex
8

Wenn mydestinationleer oder nicht enthalten $myhostnameist, /etc/aliaseswird das ignoriert, da postfix der Ansicht ist, dass die E-Mail keine lokale Zustellung ist und daher die lokalen Aliase nicht anwendet. Also, lassen Sie mydestinationdie Standardeinstellung ( postconf -d mydestinationoder entfernen Sie sie aus main.cf) und die Protokolle der zeigen sollte , to=<...>wie Ihre aliased - Adresse.

ColinM
quelle
Ich verwende einen externen Mailserver und mydestinationmuss leer sein. Ansonsten wird keine Mail versendet.
Corni
1

Unter bestimmten Umständen (dh wenn alle E-Mails an ein externes System weitergeleitet werden) ist es einfacher, die MAILTOVariable in der crontab von root auf eine echte E-Mail-Adresse zu setzen. Dies sollte die traditionelle Übermittlung an root so gut wie umgehen und einfach dahin führen, wo Sie wollen.

# Root's crontab
[email protected]
0 0 * * * /usr/bin/somescript
Dale Anderson
quelle
0

Es scheint ein Problem mit dem Öffnen des /root/.forwardPostfix-Daemons zu geben, zumindest auf einem gehärteten System (ich habe mich nicht damit befasst). Trotz:

# 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

Untergeordnetes Element des Postfix-Daemons kann nicht auf .forward zugreifen:

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)

Ich hatte keine Zeit , in sie zu graben ... Anfügen Eintrag /etc/aliasesvon gefolgt newaliasesfunktioniert gut.

r2oro
quelle