web-dev-qa-db-ja.com

postfixはmyhostnameの代わりにホスト名を使用します

ISPに中継するメールを送信するための送信メールサーバーをセットアップしようとしています。

/etc/postfix/main.cfで、myhostnameをourcompany.example.comに、myoriginとmydomainを$ myhostnameに持っています。 ourcompany.example.comは解決可能です。

しかし、/ var/log/maillogのログを見ると、postfixは送信アドレスにmyhostnameを使用しているように見えますが、これは内部サーバーであり、メールを送信しますが、受信メールは処理しません。

何か案は?

編集: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の両方がパブリックドメインである場合、誰でも解決できるので、私のISPが解決できるはずです。問題はドメインではありませんが、postfixがドメインを使用していないという事実により、次のようなログが得られます。

May 26 10:23:22 localhost postfix/smtp[3910]: 449AF5803F6: to=<[email protected]>, 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 <[email protected]>: Sender address rejected: Domain not found (in reply to RCPT TO command))

$ myoriginの代わりにserver.internalを使用しており、server.internalはgethostname()を呼び出して取得したものであり、内部ホスト名であり、パブリックインターネット上では解決できません。

だから私の質問はこれです、gethostname()を使用する代わりにexample.comを使用するようにpostfixを設定するにはどうすればよいですか?私の考えでは、gethostname()はmyorigin、mydomain、およびmyhostnameを空のままにした場合にのみ使用されますが、上記の設定に設定しても何も起こりません。

5
sunny.oxide
mydomain = example.com
myorigin = $mydomain

デフォルトでは、オプション append_at_myoriginyesに設定されています。これは、すべての送信メールがドメインコンポーネントがない場合、myoriginの値が追加されます。

あなたの場合、それはホスト名ではなくドメイン名です。

常に完全修飾アドレスを使用してメールを送信します。つまり、ローカル部分と有効な既存のドメイン/ホスト名部分の両方を含みます。

何らかの理由でできない場合は、 Address Rewriting Readme で説明されている方法のいずれかを使用してください

5
adaptr

ポート25でtelnetを使用してサーバーに接続すると、実際にmyhostnameを使用しているかどうかを明確に示す文字列が表示されます。

私の疑いは、あなたが単にアドレスをマスカレードするアドレスを適切に設定していないことです。

0
Olipro