Отримати постфікс для пересилання кореневої пошти


13

У мене на сервері Ubuntu працює постфікс. Це не поштовий сервер для мого домену.

Кожного разу, коли завдання cron працює для root, вихідна пошта не доставляється локально, натомість надсилається на root@mydomain.com через основний поштовий сервер. Це не те, що я хочу.

Я хочу, щоб пошта для кореня була надіслана локально, або надіслана на адресуmailmail@anotherdomain.com

Я намагався змінити ~root/.forwardі /etc/aliases(і запускати новинки), але нічого не допомагає (я думаю, ці файли перевіряються лише тоді, коли postfix намагається доставляти пошту локально).

Що я можу зробити?

Це /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

Редагувати:

Під час надсилання пошти в root він переходить у /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

Ім'я "ct" - це моє ім'я користувача. Я створив вищевказаний текст за допомогою цієї команди:

echo test | mail -s test root

Зміст /etc/mailname:

mydomain.com

Вміст /etc/aliases:

root: anothermail@anotherdomain.com
postmaster:    root

там, де я хотів би переслати кореневу пошту на інше@mail.antherdomain.com.

Зміст /etc/hostsнасправді мене трохи дивує:

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

де "mylinux" - ім'я хоста операційної системи хоста, під якою linux1 працює як віртуальна машина. Я не впевнений, як "mylinux" потрапив туди. (Чи може це справді бути причиною моєї проблеми?)


Чи можете ви надати нам свої журнали поштових корекцій, коли ви надсилаєте повідомлення кореневі?
Дом

Я це зробив у редакції оригінальної публікації.
oz1cz

Чи можете ви дати нам / etc / mailname та / etc / псевдоніми? Перевірте, чи / etc / hosts містить linux1.mydomain.com, призначений 127.0.1.1
Dom

Я додав інформацію до початкової публікації.
oz1cz

Відповідно до ваших журналів, пошту було правильно відправлено на ваше ретранслятор isp smtp. Я б попросив їх (ісп.) Перевірити журнали my.isps.relayhost.com [<IP-адреса відсутня>], чи є якісь підказки (антиспам, помилка, ...) про проблему.

Відповіді:


13

Як користування, перевірте свої журнали.

У вашому випадку демон постфікса вважає, що пошта не для нього, і надсилає її без використання /etc/aliases

Спочатку перевірте свій /etc/hostsфайл: у ньому має відповідати ім’я машини 127.0.1.1, як це:

127.0.1.1  linux1.mydomain.com  linux1

Перевірте і своє /etc/mailname, і воно повинно відповідати.

Перевірте, /etc/aliasesчи не надсилається root (користувач) іншому користувачеві, і повторіть newaliasesкоманду.

І це має працювати!


Це повинно бути 127.0.0.1?
Нейт

Ви можете мати будь-яку адресу в 127.0.0.0/8, тому 127.0.0.1 також працює добре
Дом

У мене була подібна проблема, поки я хотів лише використовувати реле smarthost для надсилання електронної пошти: "myhostname" повинен був бути "localhost". Все інше пропустило файл псевдонімів.
Олексій

8

Якщо mydestinationпорожній або не містить, $myhostnameто /etc/aliasesзаповіт буде проігноровано, оскільки постфікс вважає, що повідомлення електронної пошти не є локальною доставкою, і тому не застосовуватиме місцеві псевдоніми. Отже, залиште mydestinationза замовчуванням ( postconf -d mydestinationабо видаліть його main.cf), і в журналах має відображатися to=<...>як ваша псевдонімна адреса.


Я використовую зовнішній поштовий сервер і він mydestinationповинен бути порожнім. Інакше пошту не надсилають.
Корні

1

За певних обставин (тобто там, де вся пошта надсилається на зовнішню систему), простіше просто встановити MAILTOзмінну в crontab root на реальну адресу електронної пошти. Це має значною мірою обійти традиційну доставку до кореня та просто примусити її йти куди хочеться.

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

0

Здається, є проблема з відкриттям /root/.forwardдемон-постфікса, принаймні, на загартованій системі (я не вникав у нього). Попри:

# 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

Дочірній демон демона не може отримати доступ .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)

Я не встиг розкопатися в ньому ... Додавання запису до /etc/aliasesнього newaliasesпрацює чудово.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.