注意:
かなり簡易的に端折って説明しています(自分用メモなので)
もし参考にする場合、不正中継されないように細心の注意を払いましょう。
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)
DS[192.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を変えちゃうんでそれによる弊害は多々あるかも知れず。
2019/05/21 修正
コメントでご指摘頂いた通り、[ ] がプラグインの弊害で表示されていませんでした。修正致しました。
正しくは DS[192.168.0.3] です。
しかしこの記事、もう15年近く前の記事なんですねぇ…遠くにきたものです。
DS[192.168.0.3]
匿名様
ご指摘ありがとうございます。
もともとの記事には [ ] が入っていたのですが、プラグインの関係か何かで消えているようです。修正致しました。