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

postfix использует имя хоста вместо myhostname

Я пытаюсь настроить сервер исходящей почты для отправки писем, которые будут ретранслироваться нашему интернет-провайдеру.

В /etc/postfix/main.cf у меня есть myhostname для ourcompany.example.com и myorigin и mydomain для $ myhostname. ourcompany.example.com разрешима.

Но, глядя на журналы в / var / log / maillog, кажется, что postfix действительно использует myhostname для адреса отправки, но использует все, что от getmyhostname (), которое установлено на внутреннее DNS-имя, поскольку это внутренний сервер, и мы только отправлять электронную почту, но не обрабатывать входящую почту.

Любые идеи?

РЕДАКТИРОВАТЬ: 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
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 = example.com
myhostname = ourcompany.example.com
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.5/README_FILES
relayhost = smtp.grapevine.com.au
sample_directory = /usr/share/doc/postfix-2.6.5/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550

Если и ourcompany.example.com, и example.com являются общедоступными доменами, разрешить их может кто угодно, следовательно, разрешить их должен мой интернет-провайдер. Проблема не в домене, а в том, что postfix его не использует, я получаю такие журналы:

May 26 10:23:22 localhost postfix/smtp[3910]: 449AF5803F6: to=<tesing@example.com>, relay=smtp.grapevine.com.au[203.129.32.140]:25, delay=63275, delays=63274/0.02/0.04/0.4, dsn=4.1.8, status=deferred (host smtp.grapevine.com.au[203.129.32.140] said: 450 4.1.8 <benny@server.internal>: Sender address rejected: Domain not found (in reply to RCPT TO command))

Он использует server.internal вместо $ myorigin, а server.internal - это то, что вы получаете, вызывая gethostname (), и это внутреннее имя хоста, которое не разрешается в общедоступном Интернете.

Итак, мой вопрос: как настроить postfix на использование example.com вместо использования gethostname ()? Я думал, что gethostname () используется только тогда, когда я оставляю myorigin, mydomain и myhostname пустыми, но установка для них вышеуказанного параметра ничего не делает.

mydomain = example.com
myorigin = $mydomain

По умолчанию опция append_at_myorigin установлен на да, что означает, что любая исходящая почта, не имеющая доменного компонента, получит добавленное значение myorigin.

В вашем случае это доменное имя, а не имя хоста.

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

Если по каким-то причинам не получается, воспользуйтесь одним из способов, описанных в Readme для перезаписи адресов

подключитесь к вашему серверу с помощью telnet через порт 25, вы увидите строку, которая однозначно сообщает вам, действительно ли он использует myhostname.

Я подозреваю, что вы просто неправильно настроили маскировку адреса.