sendmail.mcがないぞ?

sendmailの設定ファイルはsendmail.cfなのですが、直接このファイルを編集するのでなく、sendmail.mc (マクロファイルらしい)を編集してごにょごにょ呪文を唱えてsendmail.cfを生成するのがお約束となっています。
でもね、そのsendmail.mcが見当たらないの。あるのはこんなの。

cd /etc/mail
 
find . \( -name "*.mc" -or -name "*.cf" \) -print

#---- ここから実行結果 ------
./freebsd.cf
./freebsd.submit.mc
./freebsd.mc
./submit.cf
./sendmail.cf
./freebsd.submit.cf

なんなんだ?freebsd.mcって?
google先生に訊いたり、README読んだり、Makefile読んだり、すったもんだした結果、

/etc/mail で make cf を実行すると freebsd.mc をテンプレートとして {hostname}.mc を作って、そこから {hostname}.cf 作っちゃうよ。

ということらしい。やってみよう。

make cf

#---- ここから実行結果 ------
cp freebsd.mc r-square.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 r-square.mc > r-square.cf
cp freebsd.submit.mc r-square.submit.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 r-square.submit.mc > r-square.submit.cf

うちの場合こんなんが作られた。

./r-square.mc
./r-square.cf
./r-square.submit.mc
./r-square.submit.cf

この時点で sendmail.cf と r-square.cf、submit.cf と r-square.submit.cf との差は、ほにゃほにゃホストで生成しますた的なコメントのみ。
とりあえず r-square.submit.mc に設定を追加して

vi r-square.submit.mc

#---- 編集内容ここから ------
dnl domain name dnl
MASQUERADE_AS(`r-square.net')dnl
FEATURE(`masquerade_entire_domain')dnl
FEATURE(`masquerade_envelope')dnl
#---- 編集内容ここまで ------

vi r-square.mc
#---- 編集内容ここから ------
FEATURE(`allmasquerade')dnl
#---- 編集内容ここまで ------

再度cfファイル生成。

make cf

#---- ここから実行結果 ------
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 r-square.mc > r-square.cf
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 r-square.submit.mc > r-square.submit.cf

submit.cf と r-square.submit.cf との差分を見るとなんやかや追加されたっぽい。
sendmail のというか、sendmail設定のテスト

sendmail -bt -Cr-square.cf -Cr-square.submit.cf

#---- ここから実行結果 ------
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> /tryflags HS
> /try esmtp root
Trying header sender address root for mailer esmtp
canonify           input: root
Canonify2          input: root
Canonify2        returns: root
canonify         returns: root
1                  input: root
1                returns: root
HdrFromSMTP        input: root
PseudoToReal       input: root
PseudoToReal     returns: root
MasqSMTP           input: root
MasqSMTP         returns: root < @ *LOCAL* >
MasqHdr            input: root < @ *LOCAL* >
MasqHdr          returns: root < @ r-square . net . >
HdrFromSMTP      returns: root < @ r-square . net . >
final              input: root < @ r-square . net . >
final            returns: root @ r-square . net
Rcode = 0, addr = root@r-square.net
> 
> /quit

こうすると、r-square.submit.cf で submit.cf を上書きして、sendmailを再起動できるらしい。

make install
make restart

そしてテストメールを送信すると無事に届きましたとさ。

変更前は envelope-from www@localhost.r-square.net だったのが envelope-from www@r-square.net になったよ。

そして spf=neutral とか spf=hardfail だったメールが spf=pass になってくれたよ。

ひと安心。


One thought on “sendmail.mcがないぞ?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

http://r-square.net/blog/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif  http://r-square.net/blog/wp-content/plugins/wp-monalisa/icons/wpml_good.gif  http://r-square.net/blog/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif  http://r-square.net/blog/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif  http://r-square.net/blog/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif  http://r-square.net/blog/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif  http://r-square.net/blog/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif 
more...