SMTP認証プロキシの設定

従来のcyrus-saslによるPAMを利用した認証は変更せずに、smtpで使用するPAMモジュールをpam_smtpauthに切り替えることでSMTP認証での認証を他のSMTPサーバーのSMTP認証に転送することを可能にする。

設定手順

1. まずpam_smtpauthのインストールを行います。

2. 設定ファイルを編集します。

  • cyrus-saslの設定は変更する必要はありません。PAMのままにしておいてください。PAMでない場合はPAMにしてください。
  • /etc/pam.d/smtp
    ここでpam_smtpauthに切り替える。
    #%PAM-1.0
    auth	sufficient /lib/security/pam_smtpauth.so
    account	sufficient /lib/security/pam_smtpauth.so 
    
  • 以下のコマンドで切り替えを行うのがよい
    • 認証プロキシ有効
      /usr/sbin/alternatives --install /etc/pam.d/smtp mta-pam /etc/pam_smtpauth/pam.smtp 90
      
    • 認証プロキシ無効
      /usr/sbin/alternatives --remove mta-pam /etc/pam_smtpauth/pam.smtp
      echo "" | /usr/sbin/alternatives --config mta
      
  • /etc/pam_smtpauth.conf
    詳しくは man pam_smtpauth(5) で確認してください。
    # PasswordPrompt specifies the string of the password prompt.
    PasswordPrompt = Password: 
    
    # SMTPServer_<n> specifies the string of SMTP Authentication server.
    # <n> is the number of server order.
    SMTPServer_0 = mail.example.com:25
    SMTPServer_1 = smtps:mail.example.com:465
    
    # Timeout specifies the timeout seconds of connection to SMTP
    # Authentication server. (default is 30 seconds)
    Timeout = 60
    
    # SSLCertificateFile specifies the path of a PEM encoded certificate file.
    SSLCertificateFile = /usr/share/ssl/certs/ca-bundle.crt
    
    # BlockedUserListFile specifies the path of a file that the unacceptable
    # users is written.
    #BlockedUserListFile = /etc/pam_smtpauth.blockedusers
    
    # DebugLevel specifies the debugging output level.
    # This  parameter is available if it was configured with --enable-debug=yes
    #DebugLevel = 0
    
    パラメータ名 説明
    SMTPServer_N 認証を転送するSMTPサーバー名(サーバー名:ポート番号の形式で) Nは0、複数指定の場合は、1,2,3...

確認方法

  • 通常のMUAからの確認
  • smtp-benchmarkによる確認

その他の注意点・備考

  • pamモジュールのロードエラーで認証がうまくいかない場合は、SELinuxが有効になっていないか確認してください。
  • デバグログを表示させたい場合は、設定ファイルでDebugLevelを1以上に指定してください。
  • syslog経由mailファシリティ、debugレベルでデバグ情報が出力されます。
  • DebugLevel = 9 にするとパスワードが出力されますので注意してください。
  • 対応メカニズム 優先順位は下記の通りです。メカニズムが利用可能かどうかを順に調査し、認証を行います。認証に失敗しても下位のメカニズムにスキップしません。
    CRAM_MD5 -> LOGIN -> PLAIN -> DIGEST_MD5

FrontPage