sendmailからGmailへメールを転送する方法

ようやく対応ができたので設定方法をまとめておこうと思う。

環境

CentOS 5.5 / sendmail Version 8.13.8

なお、sendmailのバージョンを確認する場合、以下のコマンドを実行します。

   1: sendmail -d0.101

<p><!--CRLF--></p>

設定したいこと 

root宛のメールをGmailのSMTPを経由してGmailで受信すること。

設定方法 

sendmail.mcの編集

GmailのSMTPサーバを使用してメールを送信するためには、OP25Bの対応を行う必要があります。sakuraのVPSでは使用期間は25番ポートが閉じられるそうなので、仕様期間後に試してみることをおすすめします。

具体的なsendmailの設定としては次のような設定を行います。

  1. dnl define(`SMART_HOST', `smtp.your.provider')dnlの次の行に以下の内容を入力します。
     
       1: define(`SMART_HOST', `smtp.gmail.com')dnl
       2: define(`ESMTP_MAILER_ARGS', `TCP $h 587')
       3: define(`RELAY_MAILER_ARGS', `TCP $h 587')
       4: FEATURE(authinfo, DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`authinfo')
       5: define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
       6: TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
  2. dnl # DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnlのコメントを解除します。
     
       1: DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
  3. dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnlのコメントを解除します。

       1: DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
  4. dnl FEATURE(masquerade_envelope)dnlの次の行に以下の内容を入力します。
     
       1: FEATURE(masquerade_envelope)dnl
       2: FEATURE(genericstable, DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`genericstable')    
       3: GENERICS_DOMAIN_FILE(MAIL_SETTINGS_DIR`genericsdomain')    
       4: FEATURE(`generics_entire_domain')    

以上でsendmail.mcの編集は終了です。

以下のコマンドを実行し、sendmail.mcからsendmail.cfを作成します。

   1: m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc &gt; /etc/mail/sendmail.cf

authinfoファイルの作成

以下のコマンドよりauthinfoファイルを作成します。

   1: vi /etc/mail/authinfo

authinfoファイルにはSMTPの認証情報を入力します。

例:vi AuthInfo:smtp.gmail.com "U:root" "I:nasubi@gmail.com" "P:パスワード"

authinfoファイルが作成できたら以下のコマンドでauthinfo.dbファイルを作成します。

   1: makemap hash /etc/mail/authinfo.db &lt; /etc/mail/authinfo

genericsdomainファイルとgenericstableファイルの作成

以下のコマンドよりgenericsdomainファイルを作成します。

   1: echo localhost &gt;&gt; /etc/mail/genericsdomain
   2: echo `hostname` &gt;&gt; /etc/mail/genericsdomain    


また、以下のコマンドを実行することでgenericstableファイルを作成します。

   1: echo root nasubi@gmail.com &gt; /etc/mail/genericstable
   2: makemap hash /etc/mail/genericstable.db &lt; /etc/mail/genericstable    
   3:     


ここまででsendmailの設定は終了です。以下のコマンドでsendmailを再起動しましょう。

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


再起動の時にOKが出なかった場合、ここまでの設定で何か問題がある可能性があります。もう一度設定内容を確認してください。

root宛のメール転送設定

ここまではsendmailでGmailのSMTP経由でメールを送信できるように設定を行いました。これからはroot宛のメールを転送する設定を行います。

次のコマンドでaliasesファイルを編集します。

   1: vi /etc/aliases


編集する内容は最終行にあるrootの設定項目です。

   1: Person who should get root's mail
   2: oot:marc
   3: root:nasubi@gmail.com


aliasesファイルを編集したら、変更内容を反映するため以下のコマンドを実行します。

   1: newaliases

最後にコマンドで、

   1: echo test|mail root

と実行してメールが設定したアドレスで受信できれば設定完了です。

設定を行っていてうまくいかないことがあると思いますが、そういうときはログファイル(/var/log/maillog)を確認してみると解決への糸口がつかめるかもしれません。