web-dev-qa-db-ja.com

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

ケーブルモデム(ブレズナン通信)の後ろに小さなホームサーバーセットアップがあります。このボックスで、通知などについてメールを受信(受信しない)できるようにしたい。

私がすでにやったこと:

  • Sendmailをインストールして構成しました。
  • mail.bresnan.netディレクティブとしてSMART_Hostを追加しました。

私が問題を信じているのは

メールを送信しようとすると、メールログに次のように記録されます。

Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns, 
  size=140, class=0, nrcpts=1, 
  msgid=<[email protected]>, 
  relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<[email protected]>, 
  size=397, class=0, nrcpts=1,
  msgid=<[email protected]>,
  proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
  to=<[email protected]>, 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=<[email protected]>, ctladdr=<[email protected]>
  (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.netSMART_Hostディレクティブを設定したものではないことに気付くでしょう。これは、bresnan.com/netドメインの(外部?)MXサーバーです。どうやらbresnanは、自分のネットワーク内からこのサーバーにアクセスできず、代わりにmail.bresnan.netサーバー(私が接続できる)を使用する必要があるようにネットワークを構成しています。問題は、serverではなくdomainを使用するようにsendmailに指示する方法がわからないことです。

私が試したこと

  • Pmx0サーバーがメールIPアドレスを指すようにhostsエントリーを設定します。これは機能しません。sendmailが明らかにIPを返すサーバーを見つけるためにMXクエリを実行しているため、「通常の」DNS解決を行う必要がないため、hostsファイルが関与することはないため、理にかなっています。

修正(すべての送信メール):

再び、小道具は私がこれを学ぶのを助けるためにwebmin(以下の注意を参照)に行きます。 sendmailにMXルックアップを実行しないように指示する角括弧でスマートホストを入力すると、define('SMART_Host','[69.145.248.18]')(引用符を修正->バックティック)は実際にはメーラーテーブルなしで機能します。

修正(特定のドメイン用):

以下で指摘するように、mailertableのセットアップが必要です。ただし、 man page で指摘されているように、この機能はsendmail.mcファイルでも有効にする必要があります。

また、メーラールートは、sendmailがすべての操作で指定されたサーバーを使用するように強制するのではなく、受信者のアドレスに基づいていることに注意してください。いくつかのドメイン(Gmail、Googleでホストされているもの、私の仕事)に送信するだけなので、これは実際には問題ありません。

要約

  • FEATURE('mailertable')sendmail.mcファイルに追加します。 (最初の引用はバックティックでなければならないことに注意してください。
  • /etc/mail/mailertableファイルを作成します( man page を参照)
  • マップファイルを作成します:Sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
  • 構成を再構築するmake -C /etc/mail
  • Sendmailを再起動します:service sendmail restart

注:I強くこれらのファイルの編集/再構築にはWebMinを使用することをお勧めします。それがなければ、メールプログラム可能なファイルが無視されている理由を理解しようとすることに夢中になっていたでしょう。

11
ErebusBat

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

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

bresnan.net       esmtp:[69.145.248.18]

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

7
ewwhite