sendmail リレー設定[FYI]



注意:
かなり簡易的に端折って説明しています(自分用メモなので)
もし参考にする場合、不正中継されないように細心の注意を払いましょう。

 

freebsd を 普通に導入すると、MTAとしてsendmailが導入されます。導入されていると、/etc/rc.conf に以下の記載があると思います。

sendmail_enable=”YES”

そのサーバのローカルからmailコマンド等でメールを送る際に、強制的に別のリレー用サーバを経由して送信する方法です。例えば、プロバイダ等でWebサーバとMailサーバが存在し、Webからは送信させずMailサーバ経由で送る(こちらしかポートを開放していない)といった場合に役立ちます。

設定は至って簡単。/etc/mail/sendmail.cf を編集します。この際、すべてrootで作業してください。

# “Smart” relay host (may be null)
DS

と、いう項目が最初の方にあります。ここにリレー先ホストのホスト名、もしくはIPアドレスで記載します。

【192.168.0.3にリレーさせたい場合】

# “Smart” relay host (may be null)
DS192.168.0.3

これでokです。後はsendmailをrestartすればokです。めんどくさい場合には、ps axでsendmailのプロセスを見つけて、全部killしたら

# sh /etc/rc.sendmail

と、入力します。以上でokです。

ちなみに、この設定はリレー先のサーバでリレーを許可していないと無効です。その場合、リレーしようとして、以下のようなエラーが/var/log/maillog に残ります。

Dec 8 **:**:** web sm-mta[*****]: **********: to=< ****@***.com>, ctladdr=< ****@***.com> (1000/1000), delay=00:00:01, xdelay=00:00:00, mailer=relay, pri=*****, relay=192.168.0.3. [192.168.0.3] dsn=5.0.0, stat=Service unavailable
Dec 8 **:**:** web sm-mta[*****]: **********: *********: DSN: Service unavailable

もしくは、dsn=5.1.3 です。この場合には、リレー先のサーバでリレーを許可する設定をしましょう。

postfixなら、

mynetworks = 192.168.0.0/24, 127.0.0.1

こんな感じです。

[追記]
単純にMTA指定でもよさそう。

#D{MTAHost}[127.0.0.1]
D{MTAHost}[192.168.0.***]

DSは名前解決ができないとエラーがついてしまう。

dsn=5.1.2, stat=Host unknown (Name server: 192.168.0.***: host name lookup failure)
dsn=4.0.0, stat=Deferred: Name server: web01.******.com: host name lookup failure

hostsに書いてやっても同様にエラーが出るので、外部に対してリレーするのでも無ければDSよりD{MTAHost}記載をするのが良いかも。
ただ、MTAを変えちゃうんでそれによる弊害は多々あるかも知れず。

コメントを残す

メールアドレスが公開されることはありません。