Назад | Перейти на главную страницу

Postfix отправляет на FQDN имя хоста вместо имени домена

Я установил постфикс только для отправки. Postfix работает, когда я отправляю письмо на полный адрес электронной почты. Однако, если письмо отправляется пользователю, оно добавляет имя FQDN в качестве расширения, а не просто имя домена, которое я настроил во время установки.

Например, когда я отправляю письмо по ssh так:

echo "This will go into the body of the mail." | mail -s "Hello world" root

Я хочу, чтобы почта отправлялась на root@example.com.au. Но письмо отправлено на root@host.example.com.au.

Я просмотрел настройки своего хоста, настройки почтового имени, настройки постфикса и понятия не имею, почему он продолжает добавлять к нему полное имя хоста, которое, очевидно, получает отказ. Вот мои файлы конфигурации:

Постфикс main.cf:

# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = host.example.com.au
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination =
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

virtual_alias_maps = hash:/etc/postfix/virtual

Псевдонимы:

mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root

/ и т.д. / постфикс / виртуальный:

root            admin@example.com.au

/ etc / mailname:

example.com.au

/ etc / hosts:

127.0.0.1       localhost
11x.0.0.xxx   host.example.com.au    host

/ etc / hostname

host

Я просмотрел все и не понимаю, почему почту отправляют на @host.example.com.au. Кто-нибудь может мне здесь помочь?

Я использую debian 8.

РЕДАКТИРОВАТЬ: Только что я попытался добавить еще один параметр в файл main.cf: masquerade_domains = $mydomain. Добавление этого, похоже, исправляет from адрес, чтобы показать мое доменное имя вместо имени хоста, но все же to адрес все еще имеет полное доменное имя. Я получаю уведомление о недоставленном электронном письме "Система доставки почты" на свой адрес электронной почты, так как исходный адрес электронной почты теперь находится сразу после добавления masquerade_domains, но до сих пор не могу понять, почему электронная почта пользователя не соблюдает то же самое и to адрес по-прежнему адресуется как root@host.example.com.au вместо того root@example.com.au.

myhostname = host.example.com.au
mydomain = example.com.au
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
masquerade_domains = $mydomain
mydestination =
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

Вам нужно указать псевдоним для root в /etc/aliases файл, как показано ниже, а затем запустите newaliases и он должен работать.

root: admin@example.com.au

Я протестировал это, и он работает.

Наконец-то он заработал. Вот шаги, которые я сделал для решения моей проблемы:

1) мое предназначение:

Поскольку у меня был почтовый сервер только для отправки, я оставил mydestination в main.cf файл пустой согласно странице руководства postfix. Однако выполнение do привело к тому, что локальные электронные письма отправлялись с добавленным именем хоста, которое было возвращено. Поэтому я добавил $hostname и localhost так как mydestination в main.cf как это:

mydestination = $myhostname, localhost

2) псевдонимы:

Затем я добавил адрес электронной почты для пользователя root в /etc/aliases как это:

root: root@example.com.au

3) newaliases:

Наконец, я перестраиваю псевдонимы и перезагружаю постфикс.

sudo newaliases
sudo service postfix reload

Что это исправило:

Поскольку псевдонимы используются только для локальной доставки, а у меня нет локальной доставки (что означает, что $ mydestination пуст), наличие корневого адреса электронной почты в псевдонимах не имело никакого значения. Теперь после добавления $hostname в пункт назначения, любые электронные письма, отправленные пользователю, к которым добавлялись $hostname подбирается как $mydestination это тогда относится к aliases который в конечном итоге сообщает postfix доставить это письмо на другой адрес электронной почты.

Я до сих пор не понимаю, почему постфикс игнорировал $domainname так как myorigin в первую очередь и продолжал добавлять hostname суффикс для пользователя до сих пор остается загадкой. Однако вышеупомянутый метод кажется решением, когда postfix непреклонен в добавлении hostname на все письма, адресованные пользователю напрямую.

Надеюсь это поможет!

Можете ли вы попробовать добавить example.com.au в файл hosts? Ссылка: http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap9sec95.html