Как обычный пользователь я могу отправлять электронную почту, либо из командной строки, либо из PHP. Но когда задание cron выдает ошибку, отправка этого сообщения не удалась (у меня есть MAILTO=me@example.com вверху crontab). То же самое происходит для отправки из командной строки от имени пользователя root (*).
Я проследил это до: когда письма работают, заголовки From и Return Path устанавливаются в me@valid.domain.com. Этот домен указан в /etc/mail/sendmail.mc, т.е. у меня есть три строки:
FEATURE(`allmasquerade') dnl
MASQUERADE_DOMAIN(`valid.domain.com.')dnl
MASQUERADE_AS(valid.domain.com)dnl
Для сообщений электронной почты, которые терпят неудачу, заголовки From и Return Path устанавливаются в root@machinename.example2.com. example2.com существует, но имя машины не имеет записи DNS. Поэтому электронная почта получает отказ с 550. machinename.example2.com - это первая запись в /etc /hosts для 127.0.0.1.
Я подозреваю, что изменение /etc /hosts с valid.domain.com может сработать, но это рабочий веб-сервер, и я не хочу ничего ломать. Это также кажется неправильным местом для решения проблемы с электронной почтой. Поэтому я надеюсь, что мне понадобятся настройки sendmail или cron. (На другой машине, ubuntu /postfix, я, кажется, создал /etc /postfix /sender_canonical для этого.)
ОС: Centos 5.6
Почтовый сервер: sendmail 8.13.8
*: но в этом случае ошибка правильно отправляется на me@example.com, так как я установил псевдоним для root в /etc /aliases. Это не случается с электронными письмами cron все же; эти отказов письма помещаются в мой локальный почтовый ящик Unix.