Uzyskaj postfiks, aby przekazać pocztę roota


13

Mam serwer Ubuntu z postfiksem. To nie jest serwer poczty dla mojej domeny.

Ilekroć uruchamiane jest zadanie crona dla roota, poczta wyjściowa nie jest dostarczana lokalnie, zamiast tego jest wysyłana do root@mydomain.com przez główny serwer pocztowy. Nie tego chcę.

Chcę, aby poczta dla roota była dostarczana lokalnie lub przekazywana na inny adres mailowy@anotherdomain.com.

Próbowałem zarówno modyfikację ~root/.forwardi /etc/aliases(i działa newaliases), ale nic nie pomaga (chyba te pliki są sprawdzane tylko wtedy, gdy próbuje Postfix do dostarczania poczty lokalnie).

Co mogę zrobić?

To jest /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

Edytować:

Podczas wysyłania poczty do katalogu głównego następuje to w /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

Nazwa „ct” to moja nazwa użytkownika. Wygenerowałem powyższy tekst za pomocą tego polecenia:

echo test | mail -s test root

Treść /etc/mailnamejest:

mydomain.com

Zawartość /etc/aliasesjest:

root: anothermail@anotherdomain.com
postmaster:    root

gdzie anothermail@anotherdomain.com to miejsce, do którego chciałbym przekazać pocztę roota.

Treść /etc/hostsfaktycznie mnie trochę zaskakuje:

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

gdzie „mylinux” to nazwa hosta systemu operacyjnego hosta, w którym linux1 działa jako maszyna wirtualna. Nie jestem pewien, jak doszło do tego „mylinux”. (Ale czy to może być naprawdę powód mojego problemu?)


Czy możesz podać nam swoje dzienniki postfiksów, gdy wysyłasz pocztę do roota?
Dom

Zrobiłem to w edycji oryginalnego postu.
oz1cz

Czy możesz podać nam swoje pliki / etc / mailname i / etc / aliases? Sprawdź, czy / etc / hosts zawiera linux1.mydomain.com przypisany do 127.0.1.1
Dom

Dodałem informacje do oryginalnego postu.
oz1cz

Zgodnie z dziennikami poczta została poprawnie wysłana do przekaźnika isp smtp. Poprosiłbym ich (isp), aby sprawdzili dzienniki my.isps.relayhost.com [<adres IP pominięty>] pod kątem wszelkich wskazówek (antyspam, błąd, ...) dotyczących problemu.

Odpowiedzi:


13

Jako użytek, sprawdź swoje dzienniki.

W twoim przypadku demon Postfix uważa, że ​​poczta nie jest dla niego i wysyła go bez użycia /etc/aliases

Najpierw sprawdź swój /etc/hostsplik: powinien on mieć nazwę twojego komputera 127.0.1.1, taką jak:

127.0.1.1  linux1.mydomain.com  linux1

Sprawdź /etc/mailnameteż, a powinno być spójne.

Sprawdź, /etc/aliasesczy root (użytkownik) jest wysyłany do innego użytkownika, i ponownie wykonaj newaliasespolecenie.

I powinno działać!


Tak powinno być 127.0.0.1?
Nate

Możesz mieć dowolny adres w 127.0.0.0/8, więc 127.0.0.1 również działa dobrze
Dom

Miałem podobny problem, podczas gdy chciałem tylko użyć przekaźnika smarthost do wysyłania wiadomości e-mail: „moja_hosta” musiała być „localhost”. Wszystko inne pomijało plik aliasów.
Alex

8

Jeśli mydestinationjest pusty lub nie zawiera, $myhostnameto /etc/aliaseszostanie zignorowany, ponieważ postfix uważa, że ​​e-mail nie jest przesyłką lokalną i dlatego nie zastosuje lokalnych aliasów. Więc pozostaw mydestinationdomyślną ( postconf -d mydestinationlub usuń ją main.cf), a logi powinny pokazywać to=<...>jako twój adres aliasu.


Korzystam z zewnętrznego serwera poczty i mydestinationmusi być pusty. W przeciwnym razie poczta nie zostanie wysłana.
Corni

1

W niektórych okolicznościach (np. Gdy cała poczta jest przekazywana do systemu zewnętrznego), łatwiej jest po prostu ustawić MAILTOzmienną w crontabie roota na prawdziwy adres e-mail. Powinno to prawie ominąć tradycyjną dostawę do rootowania i po prostu sprawić, że dotrze tam, gdzie chcesz.

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

0

Wygląda na to, że jest jakiś problem z otwarciem /root/.forwardprzez demona Postfiksa, przynajmniej na hartowanym systemie (nie zagłębiłem się w to). Pomimo:

# 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

Dziecko demona Postfiksa nie może uzyskać dostępu. Do przodu:

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)

Nie miałem czasu się w to zagłębiać ... Dopisywanie wpisu, /etc/aliasesa następnie poprawne newaliasesdziałanie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.