pgintro.net

Postfix

作成日時:2018/04/01

更新日時:2019/03/29

スポンサーリンク

この記事の確認環境

$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

$ postconf | grep mail_version
mail_version = 2.10.1

設定ファイル

/etc/postfix/main.cf
キーワード引数に設定可能な値デフォルト値説明
myhostname---
mydomain---
inet_interfaces---
setgid_group---

ログ

/var/log/maillog

sendmailコマンド

$ sendmail 送信先メールアドレス
.(ドットのみを入力してEnterで終了)

メール保存先

/var/spool/mail/

ログ出力例

smtp

Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: XXXXXXXXXXX: to=<メールアドレス>, relay=none, delay=XXXX, delays=XXXX/X.XX/XX/X, dsn=X.X.X, status=deferred (connect to ホスト名[IPアドレス]:ポート番号: Connection timed out)

pickup

Jan  1 00:00:00 localhost postfix/pickup[プロセスID]: XXXXXXXXXXX: uid=XXXX from=<ユーザー名>

cleanup

Jan  1 00:00:00 localhost postfix/cleanup[プロセスID]: XXXXXXXXXXX: message-id=メッセージID

qmgr

Jan  1 00:00:00 localhost postfix/qmgr[プロセスID]: 12E618EC7CB: from=<username@localhost.localdomain>, size=XXX, nrcpt=X (queue active)

エラー出力例

リレー設定

下記のような「Network is unreachable」の記載があるエラーログが表示されている場合

設定ファイルの内容を見直し、reload

Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: connect to ホスト名[IPアドレス]:ポート番号: Connection timed out
Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: connect to ホスト名[IPアドレス]:ポート番号: Network is unreachable
Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: XXXXXXXXXXX: to=<メールアドレス>, relay=none, delay=XX, delays=X.X/X.XX/XX/X, dsn=X.X.X, status=deferred (connect to ホスト名[IPアドレス]:ポート番号: Network is unreachable)

特定のファイルが無い

Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: error: open database /etc/postfix/sasl_password.db: No such file or directory
Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: connect to smtp.gmail.com[IPアドレス]:ポート番号: Network is unreachable
Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: warning: hash:/etc/postfix/sasl_password is unavailable. open database /etc/postfix/sasl_password.db: No such file or directory
Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: warning: hash:/etc/postfix/sasl_password lookup error for "smtp.gmail.com"
Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: warning: XXXXXXXXXXX: smtp_sasl_passwd lookup error
Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: XXXXXXXXXXX: to=<メールアドレス>, relay=smtp.gmail.com[IPアドレス]:ポート番号, delay=X.X, delays=X.XX/X.XX/X/X, dsn=X.X.X, status=deferred (local data error while talking to smtp.gmail.com[IPアドレス])

SASL認証に失敗している、SASL認証用のパッケージがインストールされていない

以下のように「warning: SASL authentication failure: No worthy mechs found」や「SASL authentication failed;」の出力があった場合は、認証に必要なパッケージがインストールされていないため認証に失敗している可能性があります。

Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: warning: SASL authentication failure: No worthy mechs found
Jan  1 00:00:00 localhost postfix/smtp[プロセスID]: XXXXXXXXXXX: SASL authentication failed; cannot authenticate to server smtp.gmail.com[IPアドレス]: no mechanism available

インストールされているか確認

# yum list installed cyrus-sasl-plain

インストールされていなかった場合はインストール

# yum install cyrus-sasl-plain

ローカルサーバーでGmail送信を可能にする

myorigin = gmail.com
myhostname = smtp.gmail.com
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
inet_protocols = ipv4
smtp_use_tls = yes
smtp_tls_security_level=encrypt
tls_random_source=dev:/dev/urandom
# postmap /etc/postfix/sasl_passwd

postmapコマンド実行時に、以下のようなwarningが表示される場合がある。

postmap: warning: /etc/postfix/sasl_passwd.db: duplicate entry: "[smtp.gmail.com]:587"

firewall設定

# firewall-cmd --list-services --zone=public --permanent
# firewall-cmd --add-service=smtp --zone=public --permanent