sendmailで送信先ドメイン制限
テストで使用しているサーバで、自社内のドメインに対してしかメール送信を許可したくないような場合。間違えて外にメール出しちゃうと困る場合。どうしよう。
Postfixだと transport_maps を使ってやったことはある。
-main.cf に以下を追加 local_recipient_maps = luser_relay = trash@localhost transport_maps = hash:$config_directory/transport -/etc/aliases には以下を追加 trash: /dev/null -transport マップファイルは許可したいドメインだけ書いて、後は全部捨てるようにする example.com : .example.com : * local:
newaliases と postmap transport して .db ファイルを更新する。念のため postfix reload する。
local_recipient_maps を空っぽにしているので、外から接続されるサーバにこの設定を入れるのはあまりよろしくないけど、LAN内のテストサーバなら問題ないと思う。
もっと他にいい方法があるのだろうか?
これと同じことをsendmailでもやりたい。
軽くぐぐった感じだと mailertable を使えば同じことが出来そう。
http://www.ki.nu/software/cf/mailertables.html
このページの説明がわかりやすかった。
aliases にゴミ箱ユーザを追加 # echo 'trash: /dev/null' >>/etc/aliases # newaliases # cat << EOT > /etc/mail/mailertable example.com : .example.com : * local:trash EOT makemap hash /etc/mail/mailertable < /etc/mail/mailertable
とやろうとしたけどダメだった。
最後の1行が効いてないらしい。
postfixみたいにワイルドカード使えないんだろうか。
ここを読んでみる。
http://www.sendmail.org/m4/mailertables.html
うーん。
"." (ドット)を使えば出来るかと思ったけど、そうしたら全てがドットにマッチしてしまってダメだった。
example.com : .example.com : . local:trash
たとえばこのように書くと、example.com だろうが example.net だろうが全て local:trash に行ってしまう。
あ、ちなみにpostfixだと一旦 local: トランスポートに渡さないといけなかったんだけど、sendmail でlocalに落とす場合に限って、local:trash (localユーザ) のような書き方が許可されるようだ。この点は便利だと思った。
けどこのままだとうまく動かない。
sendmailのことだからきっと何か方法があると思うんだけど。もう少し調べてみよう。