ubuntu 10.04 をメールサーバーに (OP25B 対策)

先の記事で Postfix を SMTP 認証に対応させた。
これによって、それまでは外部宛てのメールは Postfix を動かしている PC からだけしかできなかったのが、SMTP 認証で承認されればどこからでも送信できるようになった。

しかし、モバイル PC などを外に持ち出して、モバイル接続してこのサーバーからメールを送ろうとしても、多分エラーになってしまうだろう (サーバーに届いたメールを受け取るための IMAP4 や POP3 ならできる。)
これは、迷惑メールを遅らせないようにするために、多くのインターネット接続プロバイダーが採用している OP25B (Outbound Port 25 Blocking) が原因だ。
OP25B を回避して、モバイル接続した PC から メールを送りたいときには、メールサーバー側で Submission ポート (587 番ポート) を使ってメールを受け取れるようにして、モバイル接続した PC からもそのポートを使うようにする方法がある。

Postfix が Submission ポート (587 番ポート) を使ってメールを受け取れるようにするには、/etc/postfix/master.cf ファイルを修正する。
/etc/postfix/master.cf ファイルは 100 行以上あるので、修正前と修正後の /etc/postfix/master.cf ファイルから、修正した箇所 (12 行目から 16 行目) を含む一部分だけをここに掲げておく。

ubuntu の標準リポジトリで提供されている Postfix の /etc/postfix/master.cf ファイルには、Submission ポートからのメールの受け取りを有効にするための設定の雛形が、最初から記述されている。
Submission ポートからのメールの受け取りを有効にするための設定の雛形は、上に揚げた /etc/postfix/master.cf ファイルの 12 行目から 16 行目だ。
Postfix をインストールしたときには 12 行目から 16 行目はコメントアウトされているので、これをアンコメントするだけで Submission ポートからのメールの受け取りが有効なる。

ただし、単にアンコメントするだけでは使い勝手に若干の問題が生じるだろう。
それを解消するために、まずは 13 行目の –o オプションで指定している smtp_tls_security_level のパラメーターを、'yes' から 'may' に変更する。
そして、16 行目の '-o milter_macro_deamon_name=ORIGINATING’ をコメントアウトのままにしておく。

/etc/postfix/master.cf ファイルでは、空白文字から始まる行はその前の行と繋いで、一続きの行として解釈される。
例えば今回アンコメントした 12 行目から 16 行目 (16 行目はコメントアウトしたままなので、実質的には 12 行目から 15 行目) は、12 行目が行頭に文字 ('s') があり、それ以降の行は空白文字から始まっているので、 submission inet n - - - - smtpd -o smtpd_tls_security_level=may -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject という一続きの行として解釈される。

この一続きの行の、空白文字で区切られた最初の 8 組 (大抵は一続きにする前の最初の行) によって、Postfix は Submission ポートでメールを受け取るようになる。
空白文字で区切られた残りの部分の –o に後ろは、Submission ポートでメールを受け付けたときに Postfix に渡すパラメーターになる。
このパラメーターは、/etc/postfix/main.cf に書かれている内容に追加、上書きされる。
追加、上書きするパラメーターは、 smtpd_tls_security_level=maysmtpd_sasl_auth_enable=yessmtpd_client_restrictions=permit_sasl_authenticated,reject の三つだ ( milter_macro_daemon_name=ORIGINATING はコメントアウトしたままなので追加、上書きされない。)

一つ目のパラメーター smtpd_tls_security_level は元の (「Postfix で SMTP 認証」の記事で作成した) /etc/postfix/main.cf ファイルには記述されていないが、/etc/postfix/main.cf ファイルに記述されている smtpd_use_tls = yes および (初期値の) smtpd_enforce_tls = no と同じ意味なので、追加、上書きされても動作が変わることはない。
アンコメントせずに、コメントアウトしたままでも良さそうにだが、コメントアウトしたままでは行頭が空白文字ならないために、前後の行が分断してしまう。
また、submission ポートでのメールの受付では、SMTP 認証が使えることを強調したいためにアンコメントしている。

smtpd_tls_security_level エントリは、smtpd_use_tls エントリと smtpd_enforce_tls エントリに替わるもので、Postfix Ver.2.3 で導入された。
これに伴い、smtpd_use_tls エントリと smtpd_enforce_tls エントリの使用は非推奨になったが、ubuntu の標準リポジトリで提供される Postfix のインストールでは smtpd_use_tls エントリが未だに使用されている。
現時点の /etc/postfix/main.cf ファイルでも smtpd_use_tls エントリが記されたままだが、この記述は smtpd_tls_security_level=may にそのまま置き換えできる。
後の記事で、/etc/postfix/main.cf ファイルに記されている smtpd_use_tls エントリを、smtpd_tls_security_level エントリに書き換える予定だ。

なお、smtpd_tls_secyrity_level を 'yes' にせず 'encript' のままにすると、STARTTLS を使った暗号化通信が強制される。
submission ポートで Postifx に接続する全ての PC で使用しているメーラーが、STARTTLS を使った暗号化通信に対応しているなら 'encript' のままにしておいてもいいだろう。

二つ目のパラメーター smtpd_sasl_auth_enable は、元の /etc/postfix/main.cf ファイルにも記述されており、その値はどちらも 'yes' になっている。
つまりこれも、追加、上書きで変わることのない冗長な指定だ。

三つ目のパラメーター smtpd_client_restrictions は、元の /etc/postfix/main.cf ファイルにも記述されているが、値が異なっているので、ここで指定している 'permit_sasl_authenticated,reject' が実行時の値になる。
これによって Postfix は以下の順に受け付けたメールを判定して、処理するか否かを決定するようになる。

  • permit_sasl_authenticated
    SMTP 認証で承認された接続からのものを全て処理
  • reject
    上で処理されなかったメールの処理を全て拒否

一言で言えば、SMTP 認証で承認さたものだけを処理し、それ以外は全て拒否するという、単純かつ明快な判定基準だ。
言い換えれば、このメールサーバーを submmision ポートで接続して使用するためには、SMTP 認証による承認が必須ということだ。

最後のコメントアウトのままにしたパラメーター milter_macro_daemon_name は、Postfix と連携して受け取ったメールを調査や加工する milter と呼ばれるプログラムを呼び出す際に、呼び出し元の Postfix を区別させるための名称を指定している。
呼び出された milter の種類によっては、呼び出し元の名称で別の動作をしたり、動作ログに呼び出し元を記録するものがある。
submission ポートへの接続で受け取ったメールを、他の方法で受け取ったメールと区別して milter で処理したのなら、これをアンコメントして、 'ORIGINATING' をわかりやすい名称に代えればいい。

これで、Postfix が Submission ポート (587 番ポート) を使ってメールを受け取れるようになるので、後は sudo service postfix reload コマンドを実行して、新しい設定を読み込ませておく。

関連記事

  • CentOS 5.6 をメールサーバーに (Postfix で SMTP-auth)2011.7.15 (金) CentOS 5.6 をメールサーバーに (Postfix で SMTP-auth) 前々回の記事で Postfix を、前回の記事で Dovecot をインストール、設定した。 どちらも PostfixAdmin で MySQL サーバーのデータベースに保存したメール アカウントなどの情報を利用するようにしてある。 ここでは […]
  • ubuntu 10.04 をメールサーバーに (序説)2010.7.5 (月) ubuntu 10.04 をメールサーバーに (序説) 6 月 1 日からサーバーのアップグレードに関する記事を書き始め、悠に一ヶ月が経った。 実際には 6 月 1 日の記事から 2 週間ほど試行錯誤をした後に、既にリプレースを完了している。 6 月 17 […]
  • ubuntu 10.04 をメールサーバーに (Postfix で SMTP 認証)2010.8.4 (水) ubuntu 10.04 をメールサーバーに (Postfix で SMTP 認証) 「Postfix と PostfixAdmin の連携」で書いたように、ubuntu 10.04 LTS Server Editon にインストールした Postfix […]
  • ubuntu のインストール直後の調整 (その 3)2010.6.28 (月) ubuntu のインストール直後の調整 (その 3) [ローカル用 Postfix のインストール] ところで ubuntu を含む linux 系の OS で動くアプリケーション (特にサーバー系アプリケーション) では、アプリケーションの状態を syslog […]

コメントを残す