SMTP-AUTH(認証機能)を使ったメール送信 Postfix + dovecot の設定

前回のつづき

前回までは「mynetworks」で設定したネットワーク内でしか外部送信できませんでしたが、今回は、「mynetworks」以外から送信をできるようにします。それを実現するためにSMTPに認証機能(SMTP-AUTH)を実装します。まずはSMTP-AUTHとはなにか理解する必要があります。

SMTP-AUTHとは

スパムメールがなかった時代、メール送信サーバは、認証などなくだれでも送信できる状態でした。しかしスパムメールが流行りだすと誰でも送信できないようにメール送信にも認証が必要になりました。当初は、そのような認証機能がなかったため、POP認証の機能を使い代用していました。それが「POP before SMTP」です。そして現在では、送信サーバは、自前の認証機能を持つようになりました。それが「SMTP AUTH」です。「SMTP AUTH」は、「SASL」をいうライブラリ(フレームワーク)を使って認証システムを実現しています。

SASL

SASLはSimple Authentication and Security Layerの略で認証システムを実現するライブラリ(フレームワーク)です。Postfixだけでなくさまざまなアプリケーションで使用されています。SASLは主に「Cyrus-SASL」と「Dovecot-SASL」というライブラリを使用しています。

Dovecot-SASL

今回は「Dovecot-SASL」ライブラリを使用して認証システムを実現します。Postfixはdovecotと親和性が高く、アカウントを共有することができます。POP認証用とSMTPの認証を一元管理することができます。ちなみに「Cyrus-SASL」はSMTP用とPOP用の2種類別々に管理する必要があります。

PostfixのSMTP AUTHの設定

まずはPostfixの設定から。「smtpd_sasl_type」をdovecotに指定することで「Dovecot-SASL」ライブラリが使用できます。

vi /etc/postfix/main.cf
##smtpauth setting
#SASL認証を有効にする
smtpd_sasl_auth_enable = yes
#RCPT TO コマンドへの対応方法を制御
#mynetworksで定義したものを許可、認証成功している場合許可、認証失敗は拒否
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#Anonymous認証を拒否
smtpd_sasl_security_options = noanonymous
#outlookでSASL認証を使えるようにする。
broken_sasl_auth_clients = yes
#SASL認証で利用するレルム(ドメイン)を指定
smtpd_sasl_local_domain = $myhostname
#Dovecot-SASLを使用する
smtpd_sasl_type = dovecot
#Dovecot-SASLで使用するソケットファイル
smtpd_sasl_path = private/auth
#VRFYコマンドを無効化
disable_vrfy_command = yes

dovecotのインストール

まずは、POPサーバのアプリケーション、dovecotをインストールします。SMTPの認証に「Dovecot-SASL」を使用するとアカウント情報をdovecotに合わすため、dovecotをインストールする必要があります。

yum install dovecot

dovecot側のSMTP AUTHの設定

Postfix側が指定のソケットを通じてdovecotのアカウント情報にアクセスできるように設定します。
これでPostfixがdovecotのアカウントを使って認証することができます。

vi /etc/dovecot/conf.d/10-master.conf
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }

dovecotの認証情報の確認

dovecotの認証に使っているアカウント情報がどこか確認します。デフォルトではLinuxのユーザーを使用しているので念のため確認します。「!include auth-system.conf.ext」がコメントアウトされていなければ問題ありません。ここがコメントアウトされている場合は、Linuxのユーザーを使用しない設定になっています。

vi /etc/dovecot/conf.d/10-auth.conf
#!include auth-deny.conf.ext
#!include auth-master.conf.ext
auth_mechanisms = plain login
#Linuxのアカウントを使って認証
!include auth-system.conf.ext
#!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

次回はバーチャルメールボックス(バーチャルホスト)の設定を説明します。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする