У меня на сервере Ubuntu работает postfix. Это не почтовый сервер для моего домена.
Всякий раз, когда задание cron выполняется для пользователя root, выходная почта не доставляется локально, а отправляется на root@mydomain.com через главный почтовый сервер. Это не то, что я хочу.
Я хочу, чтобы почта для root либо доставлялась локально, либо пересылалась на anothermail@anotherdomain.com.
Я попытался изменить оба ~root/.forward
и /etc/aliases
(и запустить newaliases), но ничего не помогает (я думаю, что эти файлы проверяются, только когда 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
Редактировать:
При отправке почты в корень, это идет в /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
где anothermail@anotherdomain.com - это место, куда я хочу пересылать почту root.
Содержание на /etc/hosts
самом деле меня немного удивляет:
127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1
где «mylinux» - это имя хоста операционной системы, под которой linux1 работает как виртуальная машина. Я не уверен, как "mylinux" попал туда. (Но может ли это быть причиной моей проблемы?)
Ответы:
Как обычно, проверьте ваши логи.
В вашем случае демон postfix считает, что почта не для него, и отправляет ее без использования
/etc/aliases
Сначала проверьте ваш
/etc/hosts
файл: имя вашего компьютера должно соответствовать127.0.1.1
:Проверьте свой
/etc/mailname
тоже, и он должен быть последовательным.Проверьте,
/etc/aliases
не отправлен ли root (пользователь) другому пользователю, и повторитеnewaliases
команду.И это должно работать!
источник
127.0.0.1
?Если
mydestination
оно пустое или не содержит,$myhostname
то оно/etc/aliases
будет проигнорировано, поскольку postfix считает, что электронная почта не является локальной доставкой, и поэтому не будет применять локальные псевдонимы. Поэтому оставьте значениеmydestination
по умолчанию (postconf -d mydestination
или удалите егоmain.cf
), и в журналах должен отображатьсяto=<...>
ваш псевдоним.источник
mydestination
должен быть пустым. В противном случае почта не отправляется.В некоторых случаях (например, когда вся почта ретранслируется во внешнюю систему), проще просто установить
MAILTO
переменную в crontab root на настоящий адрес электронной почты. Это должно в значительной степени обойти традиционную доставку в root и просто заставить ее идти туда, куда вы хотите.источник
Кажется, есть некоторые проблемы с открытием
/root/.forward
демона postfix, по крайней мере, на усиленной системе (я не копался в этом). Несмотря на:Дочерний демон postfix не может получить доступ .forward:
У меня не было времени копаться в этом ... Добавление записи,
/etc/aliases
а затемnewaliases
работает отлично.источник