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

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 dovecot

Dovecotで認証ソケットを有効化する

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 dovecot

PostfixでSMTP-AUTHを有効化する

Postfixのmain.cfを編集します。

# vi /etc/postfix/main.cf

以下の設定を追加します。
smtpd_sasl_auth_enable = yes

SMTP認証機能を有効にします。

Dovecotとの連携設定

認証方式としてDovecotを利用します。

smtpd_sasl_type = dovecot

認証ソケットを指定します。

smtpd_sasl_path = private/auth

Postfixはこのソケット経由で認証を行います。

匿名認証を禁止する

匿名利用を禁止します。

smtpd_sasl_security_options = noanonymous

SMTPサーバの安全性向上に重要な設定です。

認証済みユーザーを許可する

リレー許可設定を行います。

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 postfix

SMTP認証が有効になったか確認する

telnetで確認します。

# telnet localhost 25

EHLOを実行します。

EHLO localhost

以下のようにAUTHが表示されれば成功です。

250-AUTH LOGIN PLAIN

SMTP認証機能が利用可能になっています。

opensslで確認する方法

587番ポートを利用する場合はopensslを利用します。

# openssl s_client -starttls smtp -connect localhost:587

EHLO実行後に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は必ず有効化することをおすすめします。