Я настроил Postfix, а также все соответствующие файлы сервера так, чтобы они были одинаковыми на двух разных серверах. Они были настроены в разное время, но файлы и настройки совпадают, поэтому /etc/postfix/main.cf
и /etc/hosts
, /etc/hostname
, /etc/resolv.conf
, /etc/mailname
, и так далее все совпадает.
Разница в том, что всякий раз, когда я отправляю почту с одного из них через командную строку с помощью команды mail, я получаю разные результаты от каждого устройства и не могу понять, в чем разница или откуда эта переменная извлекается из команды mail.
Хост 1 (из /var/log/mail.log):
uid=1000 from=<operations>
Хост 2 (из /var/log/mail.log):
uid=1000 [email protected]
По какой-то причине второй хост добавляет имя хоста после себя. Но верхний хост оставляет его пустым, и из-за этого он использует переменную myorigin, которую я установил в Postfix, и работает так, как задумано.
Что-то здесь не совпадает — как я уже сказал, все мои файлы одинаковы, но просто для сравнения я публикую свой postconf -n ниже (он одинаков на каждом хосте, так что нет смысла вставлять его дважды — я сравнил их с помощью Notepad++).
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
inet_protocols = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = mail.example.com, localhost.localdomain, localhost
myhostname = mail.example.com
mynetworks = 10.0.0.0/8 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = smtp-relay.gmail.com
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
решение1
Я разобрался. По какой-то причине, похоже, мой /etc/mailname не обрабатывался, хотя он был идентичен другому серверу - и файл даже имел ту же MD5sum - конфигурация Postfix его не принимала. Я также заметил, что использовал mailutils на одной системе (той, которая не работала и на которой Postfix был установлен после этого), а другая использовала bsd-mailx. Я поменял это перед попыткой изменить /etc/mailname, и, похоже, это не имело значения, но на всякий случай я отмечаю это. В любом случае, я изменил свой /etc/mailname на фиктивное значение, например test, затем выполнил sudo postfix reload и sudo service postfix restart, а затем снова переключил его на то, что я хотел (contoso.com), а затем выполнил те же две команды для обновления конфигурации и службы, и, о чудо, все заработало, как и предполагалось. Спасибо всем, кто помог.
решение2
Забудьте об этом — я пропустил, что вы упомянули /etc/mailname в своем первоначальном сообщении... но полагаю, что перезапуск postfix все еще может быть актуален.
Проверьте /etc/mailname, если у вас есть этот файл в системе. Это повлияет на ваше имя исходящей почты.
root@purgatory:/home/me# cat /etc/hostname
purgatory.corp
root@purgatory:/home/me# cat /etc/mailname
aaaaaapurgatory.corp
postfix/qmgr[33605]: C8FEF2461048: from=<[email protected]>, size=367, nrcpt=1 (queue active)
Обязательно перезапустите postfix после внесения изменений в /etc/mailname.