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のことだからきっと何か方法があると思うんだけど。もう少し調べてみよう。