exim4でスマートホスト - Gmail経由でメール送信

初エントリがこれかよwという感じですが、
自宅の白箱(GLANTANK)からスクリプト経由でメール送信させたくなり、手っ取り早くインストール済みのexim4を使おうと思いつきました。
イチからメールサーバを構築するのも面倒だし、そういえばexim4にはスマートホストっていう機能があったな...こいつでGmailSMTP経由で送れたらラクかも...
てなノリですw


すごく参考になったサイトはこちらです。

ほとんどここの手順通りなのですが、日本語の情報ではなかったので、改めて手順をまとめてみることにしました。

exim4パッケージの再設定

まずはexim4のパッケージの設定をやり直します。

$ sudo dpkg-reconfigure exim4-config

(※管理者権限が必要なコマンドには sudo をつけて書きます。)


設定項目と設定した値は以下の通りです。

  • 設定を小さなファイルに分割しますか?: <はい>
  • メール設定の一般的なタイプ: スマートホストでメール送信; SMTP または fetchmail で受信する
  • システムメール名: localhost
  • 入力側 SMTP 接続をリスンする IP アドレス: 127.0.0.1
  • メールを受け取るその他の宛先: 未入力
  • メールをリレーするマシン: 未入力
  • このホストから送出されたメールを操作するマシン (スマートホスト): smtp.gmial.com
  • 送出するメールでローカルメール名を隠しますか?: <いいえ>
  • DNS クエリの数を最小限に留めますか (ダイヤルオンデマンド)?: <いいえ>

設定項目が終了すると、設定した内容が反映され、exim4が再起動されます。

設定ファイルの変更

次にexim4の設定ファイルを手動で変更します。
/etc/exim4/passwd.client にGmailのアカウント・パスワードを設定します。

$ sudo vi /etc/exim4/passwd.client

以下を追加します。

gmail-smtp.l.google.com:[Gmailアカウント]@gmail.com:[Gmailパスワード]
*.google.com:[Gmailアカウント]@gmail.com:[Gmailパスワード]
smtp.gmail.com:[Gmailアカウント]@gmail.com:[Gmailパスワード]


GmailTLS/SMTP-AUTHなので、ポート番号587を指定する必要があります。

$ sudo vi /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost

hosts_try_auth 〜 の下にポート番号を追加するとのこと

  hosts_try_auth = ${if exists {CONFDIR/passwd.client}{DCsmarthost}{}}
  port=587


メールの送信は、Gmailのメール・サーバを経由することになるので、メールアドレスはGmailのアドレスでないと認証が通りません。
そのため、ローカルのメールアドレスを、Gmailのメールアドレスへ書き換える必要があります。


/etc/exim4/email-address を作成して、ローカルアドレスGmailのメールアドレスの対応を記述します。

$ sudo vi /etc/exim4/email-addresses

以下のような感じで記述します。

hoge@localhost: yourGmailAccount@gmail.com


ここまで設定したら、exim4を再起動します。

$ sudo /etc/init.d/exim4 restart

メール送信テスト

外部のメールアドレスに送信できるかテストしてみましょう。

$ /usr/sbin/sendmail test@send.to.com
From: hoge@localhost
To: test@send.to.com
Subject: test

This is test mail.
.

おわりに

以上でexim4でGmailへのスマートホストの設定ができました。
これでちょっとしたメール送信スクリプトを書いて、外部へメールが送信できます。
ごく個人用途のアラートメールとかにはこれで充分かと。
ただ最大の問題点としては、送信メールのFrom欄にGmailのアドレスが表示されてしまうことですね。
これを回避することはおそらく不可能かと思われますが、回避方法があれば教えて下さい。