Отправка почты из командной строки в Linux дает разные результаты с доменом на двух разных серверах

Отправка почты из командной строки в Linux дает разные результаты с доменом на двух разных серверах

Я настроил 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.

Связанный контент