PostfixでSMTP-AUTHを設定する方法

目次
PostfixでSMTP-AUTHを設定する方法を解説
メールサーバをインターネット上で運用する場合、SMTP認証(SMTP-AUTH)は必須の設定です。
SMTP認証を設定しない場合、第三者による不正利用やスパムメール送信の踏み台になる危険があります。
現在のメールサーバでは、SMTP認証によって正規ユーザーのみメール送信を許可する構成が一般的です。
Linux環境ではPostfixとDovecotを組み合わせてSMTP-AUTHを実装するケースが最も多く採用されています。
本記事ではPostfixでSMTP-AUTHを設定する方法と動作確認手順について解説します。
SMTP-AUTHとは
SMTP-AUTH(SMTP Authentication)は、SMTPサーバへメール送信を行う際に利用者認証を行う仕組みです。
SMTPサーバはユーザー名とパスワードを確認し、認証に成功した利用者のみメール送信を許可します。
現在では以下のような環境で利用されています。
- Outlook
- Thunderbird
- Gmailクライアント
- スマートフォンメールアプリ
- 業務システム
インターネット向けメールサーバでは必須の機能です。
Postfix単体では認証できない
PostfixはSMTPサーバですが、認証機能そのものは持っていません。
そのため認証処理を担当するソフトウェアと連携する必要があります。
一般的にはDovecotを利用します。
メールソフト
↓
Postfix
↓
Dovecot
↓
認証
現在のLinuxメールサーバでは標準的な構成です。
構成イメージ
SMTP-AUTHを有効にした構成例です。
Outlook
↓
SMTP-AUTH
↓
Postfix
↓
Dovecot
↓
ユーザー認証
認証成功後にメール送信が許可されます。
Dovecotのインストール
まずDovecotをインストールします。
# dnf install -y dovecot
インストール後はサービスを起動します。
# systemctl enable --now dovecot
正常に起動していることを確認します。
#systemctl status dovecotDovecotで認証ソケットを有効化する
Dovecotの設定ファイルを編集します。
# vi /etc/dovecot/conf.d/10-master.conf
service authセクションを設定します。
service auth {
}
authソケットをPostfixへ公開します。
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}これによりPostfixがDovecotへ認証要求を送信できるようになります。
Dovecotを再起動する
設定変更後はDovecotを再起動します。
# systemctl restart dovecot
エラーがないことを確認します。
# systemctl status dovecotPostfixでSMTP-AUTHを有効化する
Postfixのmain.cfを編集します。
# vi /etc/postfix/main.cf
以下の設定を追加します。
smtpd_sasl_auth_enable = yesSMTP認証機能を有効にします。
Dovecotとの連携設定
認証方式としてDovecotを利用します。
smtpd_sasl_type = dovecot
認証ソケットを指定します。
smtpd_sasl_path = private/authPostfixはこのソケット経由で認証を行います。
匿名認証を禁止する
匿名利用を禁止します。
smtpd_sasl_security_options = noanonymousSMTPサーバの安全性向上に重要な設定です。
認証済みユーザーを許可する
リレー許可設定を行います。
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination最も重要な設定の一つです。
認証済みユーザーのみSMTPリレーを許可します。
設定例まとめ
SMTP-AUTHの最小構成例です。
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destinationまずはこの構成で動作確認するとよいでしょう。
Postfixを再起動する
設定反映のためPostfixを再起動します。
# systemctl restart postfix
設定エラーがないか確認します。
# systemctl status postfixSMTP認証が有効になったか確認する
telnetで確認します。
# telnet localhost 25
EHLOを実行します。
EHLO localhost
以下のようにAUTHが表示されれば成功です。
250-AUTH LOGIN PLAINSMTP認証機能が利用可能になっています。
opensslで確認する方法
587番ポートを利用する場合はopensslを利用します。
# openssl s_client -starttls smtp -connect localhost:587EHLO実行後にAUTHが表示されることを確認します。
認証テストを行う
swaksを利用すると認証確認が容易です。
# dnf install -y swaks
認証テスト例です。
swaks --to user@example.com \
--server localhost \
--auth LOGIN \
--auth-user student \
--auth-password password成功すればSMTP認証は正常です。
よくある設定ミス
SMTP-AUTH設定では以下のミスが多く発生します。
- Dovecot未起動
- authソケット未作成
- smtpd_sasl_path間違い
- 権限設定ミス
- ファイアウォール設定ミス
まずDovecotとの連携を疑うことが重要です。
ログを確認する
認証エラー時はログ確認を行います。
# journalctl -u postfix -f
または
# tail -f /var/log/maillog認証失敗の原因を確認できます。
代表的な認証エラー
535 Authentication failed
535 Authentication failedユーザー名やパスワードが間違っています。
535 Incorrect authentication data
535 Incorrect authentication data認証情報に問題があります。
Relay access denied
Relay access denied認証設定またはリレー設定を確認します。
SMTP-AUTHと587番ポート
現在のメールクライアントでは587番ポートを利用することが一般的です。
SMTP-AUTHとSTARTTLSを組み合わせることで安全にメール送信できます。
企業環境ではほぼ標準構成となっています。
実務での利用例
SMTP-AUTHは以下のような環境で利用されています。
- 社内メールサーバ
- レンタルサーバ
- クラウドメール
- 監視通知システム
- 業務システム
現在のメールシステムでは必須の機能と言えます。
まとめ
SMTP-AUTHはSMTPサーバを安全に運用するために欠かせない機能です。
PostfixではDovecotと連携することでSMTP認証を実現できます。
主な設定はsmtpd_sasl_auth_enableやsmtpd_sasl_typeなどの項目です。
設定後はEHLOでAUTHが表示されることを確認し、認証テストを実施しましょう。
安全なメールサーバ構築のために、SMTP-AUTHは必ず有効化することをおすすめします。






