exim4でスマートホスト - Gmail経由でメール送信
初エントリがこれかよwという感じですが、
自宅の白箱(GLANTANK)からスクリプト経由でメール送信させたくなり、手っ取り早くインストール済みのexim4を使おうと思いつきました。
イチからメールサーバを構築するのも面倒だし、そういえばexim4にはスマートホストっていう機能があったな...こいつでGmailのSMTP経由で送れたらラクかも...
てなノリですw
すごく参考になったサイトはこちらです。
- GmailAndExim4 - Debian Wiki(English)
ほとんどここの手順通りなのですが、日本語の情報ではなかったので、改めて手順をまとめてみることにしました。
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パスワード]
GmailはTLS/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. .