fc2ブログ
ホーム   »  Unix/Linux  »  外部へメール送信

外部へメール送信

家のサーバから mail コマンドで外部へメールを送信しようとすると、送信者が 「user-name@localhost.localdomain」 になってしまう。いくつかのホストではこのようなドメインを SPAM とみなして弾くようだ (特に携帯は厳しい)。sendmail で外向けのメールのドメインを変更しよう。

root ユーザになって /etc/mail/sendmail.mc を開き、以下のコメントアウト (行頭の dnl) を外す。

MASQUERADE_AS(`foo.domain.com')dnl
FEATURE(masquerade_envelope)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(domain-alias.com)dnl

MASQUERADE_AS には localhost.localdomain の代わりに付けたいドメインを記述する。

FEATURE はこの変換をヘッダだけでなく MTA がやり取りするエンベローブ情報にも適用するコトを意味する。また、domain.alias.com だけでなく *.domain.alias.com に適用したい場合には masquerade_entire_domain を指定する。

MASQUERADE_DOMAIN は変換元のドメインを指定する。上記の例だと localhost, localhost.localdomain, domain-alias.com を対象としている。見ての通り複数指定が可能であり、これらのいずれかに一致したドメインは MASQUERADE_AS で指定したドメインに置き換えられる。特にエイリアス等を付けてなければ localhost と localhost.localdomain だけで良いだろう。

もう一つ覚えておく必要があるのが EXPOSED_USER。これに指定されたユーザは上記の変換が適用されない。通常はデフォルトで rootpostmaster が設定されているはずだから、これらで外へのメールは制限が付いていると思って良い。

sendmail.mc を編集したら以下のコマンドで sendmail.cf を作り直し:

$ m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 

sendmail を再起動しよう。

$ /etc/rc.d/init.d/sendmail restart
sendmail を停止中:               [  OK  ]
sm-client を停止中:              [  OK  ]
sendmail を起動中:               [  OK  ]
sm-client を起動中:              [  OK  ]

再起動したら mail コマンドなどを使用して外にメールを送信してみよう。意図したドメインが付いていれば成功 (root だと EXPOSED_USER に引っかかって変換されないので注意)。ちなみに MTA から返されるエラーメールの送信者もちゃんと MAILER-DAEMON@foo.domain.com に変換されるようになる。

コメント
トラックバック
トラックバック URL
コメントの投稿
管理者にだけ表示を許可する
Profile
Takami Torao
Takami Torao
C/C++ 使いだった 1996年、運命の Java と出会い現在に至る。のらアーキテクト。
Yah, this is image so I don't wanna eat spam, sorry!
Search

Google
MOYO Laboratory
Web

カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
ブロとも申請フォーム
RSSフィード
リンク