ケーブルモデム(bresnan通信)の後ろに小さなホームサーバーがあります。このボックスで、通知などのために電子メールを送信する(受信しない)ことができるようにします。
私がすでにやったこと:
- sendmailをインストールして構成しました。
- 指令
mail.bresnan.net
として追加しましたSMART_HOST
。
私が問題を信じているのは
メールを送信しようとすると、メールログに次のメッセージが記録されます。
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns,
size=140, class=0, nrcpts=1,
msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<aburns@bresnan.net>,
size=397, class=0, nrcpts=1,
msgid=<201012221724.oBMHOHrs001530@bresnan.net>,
proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
to=<my@work-address.com>, ctladdr=aburns (1000/1000),
delay=00:00:00, xdelay=00:00:00, mailer=relay,
pri=30140, relay=[127.0.0.1] [127.0.0.1],
dsn=2.0.0, stat=Sent (oBMHOHWZ001531 Message accepted for delivery)
Dec 22 10:24:18 batcave sm-mta[1517]: oBMH9mVv001357:
to=<my@work-address.com>, ctladdr=<aburns@bresnan.net>
(1000/1000), delay=00:14:30, xdelay=00:00:42, mailer=relay,
pri=300339, relay=pmx0.bresnan.net. [69.145.248.1],
dsn=4.0.0, stat=Deferred: Connection timed out with pmx0.bresnan.net.
メッセージがsendmailサーバーによって配信のために受け入れられる場所を確認し、次にメッセージがbresnanのサーバーへのハンドオフを試行してタイムアウトする場所を確認できます。
これが私の質問です。率直な読者は、それpmx0.bresnan.net
が私が私のSMART_HOST
指令を設定しているものではないことに気付くでしょう。これは、MX
bresnan.com / netドメインの(外部?)サーバーです。どうやらbresnanのネットワークが構成されているため、自分のネットワーク内からこのサーバーにアクセスできず、代わりにmail.bresnan.net
サーバー(私が接続できる)を使用する必要があります。問題は、ドメインではなくこのサーバーを使用するようにsendmailに指示する方法がわからないことです。
私が試したこと
- ホストエントリを設定して、pmx0サーバーがメールIPアドレスを指すようにします。これは機能しません。sendmailは明らかにMXクエリを実行してIPを返すサーバーを見つけるため、ホストファイルが関与しないように「通常の」DNS解決を行う必要はありません。
修正(すべての送信メール):
繰り返しになりますが、小道具はこれを学ぶのを助けるためにwebminに行きます(下記の注を参照)。sendmailにMXルックアップを行わないように指示する角かっこでdefine('SMART_HOST','[69.145.248.18]')
スマートホストを入力すると、(引用符を修正->バックティック)実際にはメーラーテーブルがなくても機能します。
修正(特定のドメイン用):
以下で指摘したように、セットアップmailertable
が必要です。ただし、マニュアルページで指摘されているように、この機能はsendmail.mc
ファイルでも有効にする必要があります。
また、メーラールートは、sendmailがすべての操作に指定されたサーバーを使用することを強制せず、受信者のアドレスに基づいていることに注意してください。いくつかのドメイン(Gmail、Googleがホストしている、および私の仕事)に送信するだけでよいので、これは実際に私にとっては問題ありません。
まとめ:
- ファイルに追加
FEATURE('mailertable')
しますsendmail.mc
。(最初の引用はバックティックでなければなりません。 /etc/mail/mailertable
ファイルを作成します(manページを参照)- マップファイルを作成します。
sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
- 構成を再構築する
make -C /etc/mail
- sendmailを再起動します。
service sendmail restart
注:これらのファイルを編集/再構築するには、WebMinを使用することを強くお勧めします。それがなければ、メーラブルファイルが無視された理由を理解しようとして夢中になっていたでしょう。