CentOS 5.6 をメールサーバーに (Postfix で SMTP-auth)

前々回の記事で Postfix を、前回の記事で Dovecot をインストール、設定した。
どちらも PostfixAdmin で MySQL サーバーのデータベースに保存したメール アカウントなどの情報を利用するようにしてある。

ここでは Postfix と Dovecot を組み合わせて、Postfix で SMTP-auth が使えるようにする。
また、OP25B (Outbound Port 25 Blocking) に対処するための submission ポート (587/tcp) を使ったメールの受付ができるようにもする。

Postfix は、それ自身の動作のためにメール ドメインやメール アドレスを参照する。
しかし、SMTP-auth を実現するにはそれら以外に、ユーザー アカウントやパスワードが必要だが、Postfix 自身はユーザー アカウントやパスワードを参照する手段を持っていない。
代わりに、別のアプリケーション (機構、ライブラリ) にユーザー アカウントやパスワードを受け渡し、そちらで認証した結果を受け取ることができるようになっている。

Dovecot は、保存されているメール メッセージを各人に適切に渡すために、ユーザー アカウント (一般的にはメール アドレスを転用) とパスワードを使用して、接続してくるユーザーの認証を行っている。
Dovecot のユーザー認証の機構は、別のアプリケーションに対して提供することもできるようになっている。
そこで、Postfix で SMTP-auth を実現する際に必要になるユーザー認証を、Dovecot を使って行うことにする。

そのために、Postfix の設定ファイルである /etc/postfix/main.cf ファイルに ‘ smtpd_auth_type = dovecot’ と ‘ smtpd_sasl_path = /var/run/dovecot/auth-client’ の 2 行を追加する。
‘smtpd_sasl_path’ の行のファイル名は、前回の記事で Dovecot の設定をしたときに /etc/dovecot.conf ファイルの以下の箇所に書いた ‘path’ の値だ。

/etc/dovecot.conf

更に ‘ smtpd_sasl_auth_enable = yes’ の 1 行を追加して SMTP-auth の機能 (SASL 認証機構) を有効にする。

この 3 行を Postfix の main.cf ファイルに追加するだけで Postfix は SMTP-auth の認証ができるようになるが、匿名認証を無効にする設定と、RFC の規約から外れた動作をする古いクライアント ソフトにも対応させておくための設定も追加する。
これらをを合わせると、以下の5 行 (コメント行を含めると 6 行) を /etc/main.cf に追加することになる。

/etc/postfix/main.cf (追加部分)

SMTP-auth を使えるようにしたら、認証された接続であれば他のドメイン宛てのメールであってもこれを受け付けるようにする。
これをしておかなければ、何のための SMTP-auth なのか分からなくなる。

SMTP-auth で認証された接続で他のドメイン宛てのメールが受け付けられるようにするには、以下の設定を /etc/postfix/main.cf ファイルの ‘smtpd_recipient_restrictions’ パラメーターに付け加える。

/etc/postfix/main.cf (修正前)
/etc/postfix/main.cf (修正後)

これで Postfix で SMTP-auth を有効に使う設定ができた。
後は service postfix restart コマンドを実行、Postfix を再起動して修正した /etc/postfix/main.cf ファイルを反映するだけだが、その前に Postfix を動作させているユーザーを dovecot グループに追加しておく。

上に挙げた /etc/dovecot.conf ファイルの中で、認証情報をやり取りする UNIX ソケット (/var/run/dovecot/auth-client) のアクセス権と所有グループを mode = 0660、group = dovecot としている。
つまり認証情報をやりとりするプログラムは、dovecot グループに属していなくてはならないということだ。
参考までに ls -l /var/lon/dovecot/auth-client コマンドの実行結果を以下に記する。

CentOS では Postfix は postfix ユーザーで動作し、postfix ユーザーは postfix グループだけ属しているのが初期状態だ。

これを見てわかるように、Postfix を動かしている postfix ユーザーはこの UNIX ソケットにはアクセスできない。
アクセスできるようにするには、以下のコマンドを実行して postfix ユーザーを dovecot グループに所属させてしまうのが簡単だろう。

これで、Postfix で SMTP-auth を使うための準備が全て整ったところで、もう一つだけ、OP25B に対処するための submission ポートを使ったメールの受け付けができるようにしておく。

submission ポートを使ったメールの受け付けそのものは、SMTP-auth と何の関わりもないのだが、OP25B が spam を抑止するために導入され、OP25B の導入に伴って submission ポートを使ったメールの受け付けが普及したという経緯がある。
これを鑑みれば、submission ポートを使たメールの受け付けに際してその接続を認証し、承認されなければ受け付けないようにしておかなくては意味をなさないと言える。
つまり、submission ポートを使ったメールの受け付けができるようにするためには、SMTP-auth などで接続の認証ができることが必要条件だといえる。
そこで SMTP-auth を使えるようにしたのを機に、submission ポートを使ったメールの受け付けをできるようにするのも、自然な発想だろう。

submission ポートを使ったメールの受け付けを可能にするには、/etc/postfix/maaster.cf ファイルを以下のように編集、修正する。

/etc/postfix/master.cf (編集前)
/etc/postfix/master.cf (編集後)

Postfix で submission ポートを使ったメールの受け付けを可能にするための設定はこれだけだ。
submission ポートで受け付けは、SMTP-auth による認証の承認が必須にしてある。

先ほどから後回しにしていた service postfix restart コマンドを実行して、SMTP-auth と submission ポートを使ったメールの受け付けの設定を反映させる。

関連記事

  • ubuntu 10.04 をメールサーバーに (序説)2010.7.5 (月) ubuntu 10.04 をメールサーバーに (序説) 6 月 1 日からサーバーのアップグレードに関する記事を書き始め、悠に一ヶ月が経った。 実際には 6 月 1 日の記事から 2 週間ほど試行錯誤をした後に、既にリプレースを完了している。 6 月 17 […]
  • ubuntu 10.04 をメールサーバーに (OP25B 対策)2010.8.9 (月) ubuntu 10.04 をメールサーバーに (OP25B 対策) 先の記事で Postfix を SMTP 認証に対応させた。 これによって、それまでは外部宛てのメールは Postfix を動かしている PC からだけしかできなかったのが、SMTP […]
  • CentOS 5.6 をメールサーバーに (Postfix のインストール)2011.7.7 (木) CentOS 5.6 をメールサーバーに (Postfix のインストール) 前回の記事で、MySQL をサポートするようにし (PostgreSQL のサポートを解除し) た Postfix の RPM パッケージを作成した。 今回はその RPM パッケージをインストールし、実際に使えるように設定する。 前回の記事で作成した […]
  • CentOS 5.6 をメール サーバーに (Apache, PHP のインストール)2011.6.27 (月) CentOS 5.6 をメール サーバーに (Apache, PHP のインストール) CentOS 5.6 に Postfix + Dovecot + PostfixAdmin の環境を構築するため、前回の記事で MySQL サーバーをインストールした。 今回は PostfixAdmin を動かす Apache と PHP […]

コメントを残す