特定のサーバーを介して中継するようにsendmailを構成する方法


11

ケーブルモデム(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指令を設定しているものではないことに気付くでしょう。これは、MXbresnan.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を使用することを強くお勧めします。それがなければ、メーラブルファイルが無視された理由を理解しようとして夢中になっていたでしょう。


sendmail.mcを確認できますか?
ラースク

sendmail.mc構成ファイルに変更を加えたときに、変更のたびにsendmailを再起動しましたか?
ewwhite

回答:


7

sendmail /etc/mail/mailertableファイルに短いエントリを追加すると、MXルックアップを回避できます。

ファイルの内容には、おそらく次のような1行が必要です。

bresnan.net       esmtp:[69.145.248.18]

ファイルを保存して、sendmailを再起動します(または、手動で行う必要がある場合はsendmail.cfを再構築します)。


2
あなたの答えは正しかった。ただし、追加の手順を実行する必要がありました。この問題が発生した他の人については、上記の私の編集を参照してください。
ErebusBat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.