Мы используем Postfix на нашей машине с CentOS 6, имеющей следующую конфигурацию. Мы используем PHP mail()
функция для отправки элементарных писем для сброса пароля, но есть проблема.
Как вы увидите, mydomain и myhostname установлены правильно, afaik.
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = localhost
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = ***.ch
myhostname = test.***.ch
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
Теперь это то, что находится в /var/log/maillog
Postfix при отправке электронного письма на адрес ***.***@***.ch
, с участием ***.ch
это тот же домен, что и наш отправляющий сервер test.***.ch
горит:
Dec 13 16:55:06 R12X0210 postfix/pickup[6831]: E6D6311406AB: uid=48 from=<apache>
Dec 13 16:55:06 R12X0210 postfix/cleanup[6839]: E6D6311406AB: message-id=<20121213155506.E6D6311406AB@test.***.ch>
Dec 13 16:55:07 R12X0210 postfix/qmgr[6832]: E6D6311406AB: from=<apache@test.***.ch>, size=1276, nrcpt=1 (queue active)
Dec 13 16:55:52 R12X0210 postfix/smtp[6841]: E6D6311406AB: to=<***.***@***.ch>, relay=mail.***.ch[**.**.249.3]:25, delay=46, delays=0.18/0/21/24, dsn=5.0.0, status=bounced (host mail.***.ch[**.**.249.3] said: 550 Sender Rejected (in reply to RCPT TO command))
Dec 13 16:55:52 R12X0210 postfix/cleanup[6839]: 8562C11406AC: message-id=<20121213155552.8562C11406AC@test.***.ch>
Dec 13 16:55:52 R12X0210 postfix/bounce[6848]: E6D6311406AB: sender non-delivery notification: 8562C11406AC
Dec 13 16:55:52 R12X0210 postfix/qmgr[6832]: 8562C11406AC: from=<>, size=3065, nrcpt=1 (queue active)
Dec 13 16:55:52 R12X0210 postfix/qmgr[6832]: E6D6311406AB: removed
Dec 13 16:55:52 R12X0210 postfix/local[6850]: 8562C11406AC: to=<root@test.***.ch>, orig_to=<apache@test.***.ch>, relay=local, delay=0.13, delays=0.07/0/0/0.05, dsn=2.0.0, status=sent (delivered to mailbox)
Dec 13 16:55:52 R12X0210 postfix/qmgr[6832]: 8562C11406AC: removed
Таким образом, принимающий сервер отклоняет отправителя (строка 4 вывода журнала). Мы протестировали его с еще одним получателем, и он сработал, поэтому эта проблема может быть совершенно не связана с нашими настройками, но связана с получателем.
Тем не менее, задавая этот вопрос, я хочу удостовериться, что мы не делаем очевидной неверной конфигурации на нашей стороне.
Во-первых, вы должны сообщить функции PHP mail (), кто является отправителем почты, если вы этого не сделаете, она возьмет имя пользователя, который запускает PHP, и добавит к нему @test. *****. Ch и я полагаю, test. ****. ch не имеет записи MX и не используется для получения почты.
А теперь общий совет:
Это мой подход к спутниковым почтовым ящикам, которые просто отправляют почту (когда у вас нет test. ***. Ch в качестве отдельного почтового домена).
На главном почтовом сервере я создаю учетную запись для отправки почты для каждого из моих серверов, я использую эту информацию учетной записи для ретрансляции всей почты на главный почтовый сервер, чтобы он мог позаботиться о дальнейшей доставке. Чтобы настроить это, просмотрите параметры smtp_sasl.
После этого создайте файл / etc / postfix / generic со следующим содержимым:
@test.*****.ch server.test@*****.ch
и запустите:
postmap hash:/etc/postfix/generic
Теперь добавьте в файл main.cf:
smtp_generic_maps = hash:/etc/postfix/generic
И для хорошей меры пересылайте почту для root (через / etc / aliases или /root/.forward), чтобы перенаправить всю почту для root на адрес электронной почты системного администратора.
Конечно, после всего этого вам необходимо перезапустить Postfix.
Все это решает несколько проблем:
Выполняет ли домен получателя проверку отправителя? и если да, то у test.xxxxx.ch правильные записи DNS и / или MX. Что говорят журналы на принимающем хосте, поскольку они предоставят больше информации. Я бы удостоверился, что test.xxxx.ch имеет правильный dns / mx и принимает входящее соединение, которое будет отвечать на RCPT TO для apache@test.xxxxx.ch, так что, когда принимающий хост пытается сделать отправитель, проверьте его пройдет.
Насколько я могу судить, конечному серверу не нравится отправитель apache@test.***.ch
Вы можете попробовать добавить myorigin = $mydomain
в Postfix main.cf
Файл конфигурации