Postfix

SendGridをリレーホストとして利用するためにPostfixの設定を更新することは簡単です。より高度な設定についてはPostfixドキュメントを参照する必要があります。

Postfixのいくつかの実装では、パスワードにアルファベットと数字のみ利用可能なものがあります。これは、SendGridのパスワードとしてアルファベットと数字のみ利用可能なことを意味します。

Postfixの設定ファイルを開いてください。通常、 /etc/postfix/main.cf です。そして、以下を追加してください:

1
2
3
4
5
6
7
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_tls_security_level = encrypt
header_size_limit = 4096000
relayhost = [smtp.sendgrid.net]:587

ここで上で設定した別のファイル /etc/postfix/sasl_passwd (新たに作成が必要)にて認証情報を指定します(ユーザ名としてapikey(固定文字列)を、パスワードとしてAPIキーを指定します):

1
[smtp.sendgrid.net]:587 apikey:yourSendGridApiKey

次に、このファイルがrootアカウントでのみ読み書きができるよう制限されていることを確認して、postmap コマンドを使用してPostfixがこの新しいファイルを使用するようハッシュテーブルを更新します:

1
2
$ sudo chmod 600 /etc/postfix/sasl_passwd
$ sudo postmap /etc/postfix/sasl_passwd

最後にPostfixを再起動してください:

1
$ sudo systemctl restart postfix

no mechanism available エラーが発生した場合、一般的にはSASL認証ライブラリがないことを意味します。

この場合、apt-get(i.e., Debian, Ubuntu)を使用して依存関係にある不足しているモジュールをインストールしてください:

1
$ apt-get install libsasl2-modules

またはyum (i.e., RedHat, Fedora, CentOS)を使用してください:

1
$ yum install cyrus-sasl-plain

トラブルシューティング

ポート番号587が利用できない場合、2525を試してください。また、 /etc/postfix/master.cf の以下のコメントアウトを外す必要がある場合があります。

#tlsmgr unix - - n 1000? 1 tlsmgr


エラーが発生する場合は、サーバのデフォルトの maillog ファイルに出力された内容を確認してください。CentOSサーバであれば、ファイルはデフォルトで /var/log/maillog にあります。
このファイルは、サーバがSendGridを使用してメールを送信できなかったことを記録するだけでなく、エラーの原因を調査するための優れたデバッグツールとしても機能します。