У меня два сервера с одинаковой настройкой. Первый отправляет письма нормально, другой не отправляет почту. Похоже, проблема в отправителе. Когда я отправляю местную почту, используя:
echo 'Message' | mailx -s 'Test' info@domain.com
в журнале постфиксов будет написано:
from=<root@subdomain.domain.com.domain.com>
пока на первом сервере он правильно читает:
from=<root@subdomain.domain.com>
Я проверил /etc/hostname
, /etc/hosts
, проверил правильный mydomain
и myhostname
с участием postconfig
. Выход postconf -n
точно так же:
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
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
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
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
relayhost = [host.relay.com]:587
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
smtp_use_tls = yes
unknown_local_recipient_reject_code = 550
В mail.cf
установлен на все значения по умолчанию, за исключением добавления relayhost и SASL.
Я попытался установить mydomain
и myhost
явно в main.cf
но это, кажется, игнорируется, так же как root: root@subdomain.domain.com
в /etc/aliases
а затем делать newaliases
и перезапуск постфикса ничего не меняет.
Я также пробовал отправить электронное письмо с помощью сценария PHP, без разницы.
В main.cf
на сервере 1 точно так же, как на сервере 2, оба работают под одной и той же системой (CentOS 7) и программным обеспечением. Единственная разница в том, что они находятся на разных доменах (например, subdomain.domain1.com и subdomain.domain2.com), так что это может быть возможным, но кажется маловероятным.
Тем не менее, сервер 1 может отлично отправлять почту, используя mailx
команду выше, а также из вышеупомянутого сценария PHP (который представляет собой не более чем простой mail()
команда.
Что могло привести к тому, что postfix явно игнорировал настройки домена / хоста, но все же выбирал правильные значения, но настаивал на добавлении домена к адресу отправителя?
Ответ DNS.
Первая подсказка была в журналах, где я заметил, что на самом деле именно sendmail, а не postfix, первым упомянул неправильный адрес.
После некоторого поиска в Google я обнаружил, что sendmail при обнаружении ошибок при разрешении домена, очевидно, предлагает комбинацию хост + домен. Проверяя свою конфигурацию DNS, я заметил две вещи: я еще не настраивал обратный DNS, и я не указал Запись AAAA (IPv6) для поддомена, который используется сервером.
После добавления и sendmail, и postfix, где используется правильный адрес, без добавленного домена.