ネットサービスとかGoogleとか豆知識とか。

Index > プログラミング > MacのマシンからPostfixでGmailに送信できるようにする
プログラミング
2008年12月29日 16:14

MacのマシンからPostfixでGmailに送信できるようにする

  • このエントリーをはてなブックマークに追加
  • ... PV
スポンサード リンク

開発マシンからGmailにメールが届かなくなっていた

ローカルの開発用マシン(うちの場合はMac OS X)からGmailにメールを送信できなくなっていました。

/var/log/mail.log のメールログを見てみると、

The IP you're using to send mail is not authorized 550-5.7.1 to send email directly to our servers. Please use the SMTP 550-5.7.1 relay at your service provider instead. Learn more at 550 5.7.1 http://mail.google.com/support/bin/answer.py?answer=10336

ふむ。SMTP 550-5.7.1 ってなんだろう。とりあえず指定されてるURLを見てみる。

» 'The IP you're using to send email is not authorized...' - Help Center

In order to prevent spam, Gmail refuses mail when the sending IP address does not match the sending domain. To send mail from your server to Gmail, we suggest using the SMTP relay provided by your ISP. Please note that we are unable to whitelist IP addresses or otherwise make exceptions at this time.

スパム除けのために送信ドメインと送信IPアドレスが一致しないものは拒否していると。なので使ってるISPのSMTPサーバーをリレーしてくださいと。

ドメインが一致しないってことは開発用に適当に設定しているFromアドレスがだめなのかなと思って、メールヘッダに設定しているFromアドレスを有効なものに変更してみたが結果は同じ。

なのでSMTPサーバーのリレー設定をする。

Postfixの設定

うちのMacはPostfixでメール送信しているようなので色々調べてみると /etc/postfix/main.cf に次のような記述を追加するといいらしい。

relayhost = [smtp.xxx.ocn.ne.jp]

↑ プロバイダのSMTPサーバを指定

これで再度試してみる。まだエラー。

... said: 450 <xxx@xxx-macbook-air.local>: Sender address rejected: Domain not found (in reply to RCPT TO command))

エラーメッセージが変わった。送信元のアドレスのドメインがだめと言われた。確かに macbook-air.local になってるねw

ということで /etc/postfix/main.cf にmyhostnameを設定する。

myhostname = xxx.ocn.ne.jp

とりあえずISPのメールアドレスのドメインを設定してみる。再度メール送信を実行。

...said: 550 Error: Invalid From: Address (in reply to end of DATA command))

またエラーメッセージが変わった。ここでFromアドレスを有効なものにすればいいのか。アプリケーションのほうで設定を変更。再度メール送信を実行。

Gmailにメールが届いた!

まとめ

というわけで最低限必要な設定は、

  • /etc/postfix/main.cf に relayhost を設定
  • /etc/postfix/main.cf に myhostname を設定
  • Fromアドレスを有効なものにする

ちなみにFromアドレスの変更については main.cf に sender_canonical_maps を設定することでも可能。

/etc/postfix/main.cf に

sender_canonical_maps = hash:/etc/postfix/sender_canonical

と記述し、 /etc/postfix/sender_canonical にマッピングを設定。

# 変更前のアドレス   変更後のアドレス
xxx@xxx.xxx    yyy@example.com

保存したら以下のコマンドでマッピングデータベースを作成する。

$ cd /etc/postfix
$ sudo postmap sender_canonical

これで /etc/postfix/sender_canonical.db が作成され、送信されるメールのFromアドレスを変更できる。