SendmailでGmailに転送

実験用のLinux機が欲しい!ということでここを参考にサーバを作り始める。
が、しかし、しょっぱなroot宛のメールを転送する設定でつまずく・・・
書いてあるとおりにやったのに!大人はうそつきだ!

結局1日がかりでごにょごにょしてました。
参考にしたのはこのへん。

OP25B(Outbound Port 25 Blocking)対策 - CentOSで自宅サーバー構築
sendmailでGmailへ転送すること - ワインのばか
http://james-lloyd.com/getting-sendmail-use-gmail-as-a-relay-2/
Configuring Sendmail to relay through Gmail SMTP | AppGirlAppGirl

途中経過書いても仕方ないので最終的にやったことだけ書く。
まず環境
CentOS 5.4
Sendmail 8.13.8-2.el5

んで設定
まず /etc/mail/sendmail.mc の編集
dnl define(`SMART_HOST', `smtp.your.provider')dnl の次の行に以下を追加。


define(`SMART_HOST', `smtp.gmail.com')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 587')
define(`RELAY_MAILER_ARGS', `TCP $h 587')
FEATURE(authinfo, DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`authinfo')
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')

そんで
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl のコメントを外す。


DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl

最後に
dnl FEATURE(masquerade_envelope)dnlの行の次に以下を追加。


FEATURE(masquerade_envelope)dnl
FEATURE(genericstable, DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`genericstable')
GENERICS_DOMAIN_FILE(MAIL_SETTINGS_DIR`genericsdomain')
FEATURE(`generics_entire_domain')
/etc/mail/sendmail.mc の編集はこれで終わり。


sendmail.mcからsendmail.cfを作る。


m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf


次はauthinfoファイルを作る。
中身はこんな感じ。


AuthInfo:smtp.gmail.com "U:root" "I:hoge@gmail.com" "P:アカウントのパスワード"
作ったらauthinfo.dbの作成

makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo


次はgenericsdomainファイルを作る。


echo localhost >> /etc/mail/genericsdomain
echo `hostname` >> /etc/mail/genericsdomain
これでOK。


次はgenericstableファイルを作る。


echo root hoge@gmail.com > /etc/mail/genericstable
でgenericstable.dbを作る。

makemap hash /etc/mail/genericstable.db < /etc/mail/genericstable

hoge@gmail.comは送信に使うgmailアカウントなので各自置き換えること。
sendmailの設定はこれで終わりなので設定を反映させる。


/etc/rc.d/init.d/sendmail reload


最後に送信先を設定する。
/etc/aliasesのroot:なんたらかんたら って行を書き換える。
デフォルトではコメントになってた気がする。


#root: michael

root: huga@gmail.com
に書き換える。
これでroot宛のメールはhuga@gmail.comに送られる。



newaliases
でaliasesの設定を反映させて、

echo test|mail root
ってやってメールがhuga@gmail.comに届けばOK。