IThaiのブログ

IT関連の話題やタイに関する様々なことを書いていきます。

Postfixでgmailにメール送信

postfixを使ってgmailにメール送信してみました。

$ sudo alternatives --config mta

There is 1 program that provides 'mta'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.postfix

gmailにメールを送信してみます。

$ sendmail example@gmail.com
From:e@example.com     
To:example@gmail.com
Subject:test

welcome!

.

gmailのメールBoxを確認してみましたが、受信できておらず。。。送信ログを確認してみます。

$ sudo tail /var/log/maillog 
...
Jun 10 15:50:00 vagrant-centos64 postfix/smtp[2524]: ... status=deferred ... connect to alt2.gmail-smtp-in.l.google.com ... Network is unreachable

どうやらgmailのメールサーバへの送信に失敗しているようです。

そこで、ネットで調査していると以下を発見しました。

Postfix で、Gmail にメールをリレーする - 私の二次記憶

どうやらOP25Bという問題のおかげで直接25番portでSMTPできないようです。

そこで、PostfixにTLS、SASLの追加設定をします。

$ sudo vim /etc/postfix/main.cf

relayhost = [smtp.gmail.com]:587
#sasl setting
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
#tls setting
smtp_use_tls = yes

SASL 認証パスワードファイル sasl_passwd を作成します。書く内容としては、[smtp.gmail.com]:587 と、自身のGoogleアカウントのメールアドレスとパスワードを書きます。

$ sudo vim /etc/postfix/sasl_passwd

[smtp.gmail.com]:587 example@gmail.com:passpass

ハッシュファイルを作成します。

$ sudo postmap /etc/postfix/sasl_passwd

再度メールを送信してみます。

$ sendmail -f e@example.com example@gmail.com
.

まだ送信できていないようです。ログをみると、Please log in via your web browser. の表示があります。

$ sudo tail /var/log/maillog

status=deferred (SASL authentication failed; server smtp.gmail.com ... Please log in via your web browser ...

どうやら、以下にアクセスして、安全性の低いアプリを許可しないといけないようです。

https://www.google.com/settings/security/lesssecureapps

許可してメールを送信すると、無事送信できました。