CentOS 5/postfix



前書き (執筆:2008/09/17)

ここではPostfixをソースファイルからインストールする方法を記載します。

ソースファイルの入手

Postfixのサイトより最新のソースファイルを取得します。
執筆時点の最新版は 2.5.5 になります。

# wget ftp://postfix.get7.biz/postfix/official/postfix-2.5.5.tar.gz
--14:46:07--  ftp://postfix.get7.biz/postfix/official/postfix-2.5.5.tar.gz
           => `postfix-2.5.5.tar.gz'
postfix.get7.biz をDNSに問いあわせています... 219.94.145.73
postfix.get7.biz|219.94.145.73|:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。    ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。  ==> CWD /postfix/official ... 完了しました。
==> SIZE postfix-2.5.5.tar.gz ... 3157877
==> PASV ... 完了しました。    ==> RETR postfix-2.5.5.tar.gz ... 完了しました。
長さ: 3157877 (3.0M)

100%[==========================================>] 3,157,877    692K/s   in 4.5s

14:46:12 (690 KB/s) - `postfix-2.5.5.tar.gz' を保存しました [3157877]

ソースファイルの展開

ダウンロードしたソースファイルを展開します。

# tar xzf postfix-2.5.5.tar.gz --directory=/usr/local/src/

展開が終了すると postfix-2.5.5 というディレクトリが作成されます。

ユーザー・グループの登録

postfixというユーザーで動作させるため、ユーザーおよびグループを登録します。

# useradd -M -s /sbin/nologin postfix
# groupadd postdrop

コンパイル・インストール

make時に必要なオプションをつけます。
(デフォルト運用する場合は必要ありません。)
ここでは

  • TLSサポート
  • SASLサポート

を組み込むため一度 makefiles を作成します。
SASLライブラリのディレクトリを指定する必要があるので、オプションで追加します。

# make makefiles CCARGS='-DDEF_MAILQ_PATH=\"/usr/bin/mailq.postfix\" \
 -DDEF_NEWALIAS_PATH=\"/usr/bin/newaliases.postfix\" \
 -DDEF_SENDMAIL_PATH=\"/usr/sbin/sendmail.postfix\" \
 -DUSE_TLS \
 -I/usr/include/sasl \
 -DUSE_SASL_AUTH \
 -DUSE_CYRUS_SASL' \
 AUXLIBS='-lssl \
 -lcrypto \
 -L/usr/lib64/sasl2 \
 -lsasl2'
# make

インストールを行うと、最後に質問事項が表示されるので、必要に応じて修正します。
とくに変更の必要がなければリーターンで進みます。

# make install
  ・
  ・

    Warning: if you use this script to install Postfix locally,
    this script will replace existing sendmail or Postfix programs.
    Make backups if you want to be able to recover.

    Before installing files, this script prompts you for some definitions.
    Most definitions will be remembered, so you have to specify them
    only once. All definitions should have a reasonable default value.

Please specify the prefix for installed file names. Specify this ONLY
if you are building ready-to-install packages for distribution to other
machines.
install_root: [/]

Please specify a directory for scratch files while installing Postfix. You
must have write permission in this directory.
tempdir: [/usr/local/src/postfix-2.5.5]

Please specify the final destination directory for installed Postfix
configuration files.
config_directory: [/etc/postfix]

Please specify the final destination directory for installed Postfix
administrative commands. This directory should be in the command search
path of adminstrative users.
command_directory: [/usr/sbin]

Please specify the final destination directory for installed Postfix
daemon programs. This directory should not be in the command search path
of any users.
daemon_directory: [/usr/libexec/postfix]

Please specify the final destination directory for Postfix-writable
data files such as caches or random numbers. This directory should not
be shared with non-Postfix software.
data_directory: [/var/lib/postfix]

Please specify the destination directory for the Postfix HTML
files. Specify "no" if you do not want to install these files.
html_directory: [no]

Please specify the owner of the Postfix queue. Specify an account with
numerical user ID and group ID values that are not used by any other
accounts on the system.
mail_owner: [postfix]

Please specify the final destination pathname for the installed Postfix
mailq command. This is the Sendmail-compatible mail queue listing command.
mailq_path: [/usr/bin/mailq]

Please specify the destination directory for the Postfix on-line manual
pages. You can no longer specify "no" here.
manpage_directory: [/usr/local/man]

Please specify the final destination pathname for the installed Postfix
newaliases command. This is the Sendmail-compatible command to build
alias databases for the Postfix local delivery agent.
newaliases_path: [/usr/bin/newaliases]

Please specify the final destination directory for Postfix queues.
queue_directory: [/var/spool/postfix]

Please specify the destination directory for the Postfix README
files. Specify "no" if you do not want to install these files.
readme_directory: [no]

Please specify the final destination pathname for the installed Postfix
sendmail command. This is the Sendmail-compatible mail posting interface.
sendmail_path: [/usr/sbin/sendmail]

Please specify the group for mail submission and for queue management
commands. Specify a group name with a numerical group ID that is
not shared with other accounts, not even with the Postfix mail_owner
account. You can no longer specify "no" here.
setgid_group: [postdrop]
  ・
  ・

sendmailの停止

sendmailが自動起動設定されているのでこれを停止します。

# service sendmail stop
# chkconfig sendmail off

main.cf 基本設定

設定ファイルは /etc/postfix/main.cf になります。
必要最低限と思われる箇所のみ抜粋していますので、実際のファイル、ドキュメント等を参考に運用スタイルに合わせて設定を行ってください。

また、ここでは分かりやすいように和訳コメントを付加しています。
和訳された設定ファイルは Postfixのページ:http://www.postfix-jp.info/ を参考にさせていただいています。

# vi /etc/postfix/main.cf

特に設定・修正が必要な箇所を抜粋

# インターネットのホストとドメイン名
# 
# myhostname パラメータにはこのメールシステムのインターネット上の
# ホスト名を指定します。デフォルトは gethostname() から得られた
# FQDN(fully-qualified domain name, ホスト名+ドメイン名)です。
# $myhostname は他の多くの設定パラメータでデフォルト値として使われます。
myhostname = mail.XXXXXX.XXX


# mydomain パラメータにはローカルなインターネットドメイン名を指定
# します。デフォルトは $myhostname からはじめの部分を引いたものです。
# $mydomain は他の多くの設定パラメータでデフォルト値として使われます。
mydomain = XXXXXX.XXX


# メールの送信
# 
# myorigin パラメータにはローカルで送信されたメールがどのドメインから
# 来るように見えるかを指定します。デフォルトは $myhostname で、これは
# 小さなサイト向きです。もし複数のマシンがあるドメインで走らせるので
# あれば、(1)これを $mydomain に変えて、(2) それぞれのユーザに対する
# エイリアスを user@that.users.mailhost の形でドメイン全体に渡って
# 作るべきです。
#
# 送信者と受信者のアドレス間の一貫性を保つため、myorigin は
# @domain 部分がない受信者アドレスに付け加えられるデフォルトの
# ドメインも指定します。
#
myorigin = $mydomain


# メールの受信

# inet_interfaces パラメータには配送されたメールをメールシステムが
# 受け取る際のネットワークインターフェースのアドレスを指定します。
# デフォルトではソフトウェアはマシン上のすべてのアクティブなインター
# フェースを要求します。このパラメータは user@[ip.address] へのメールも
# 制御します。
#
# プロキシもしくはネットワークアドレス変換ソフトを通して自身に
# 転送されるネットワークアドレスについては、proxy_interfaces
# パラメータも参照してください。
#
# 注意: このパラメータを変更したら、Postfixを stop/start する
# 必要があります。
inet_interfaces = all


# mydestination パラメータには、このマシンが自分自身が最終目的地だと
# みなすドメインのリストを指定します。
#
# これらのドメインは local_transport パラメータで設定された配送
# エージェントに回されます。それはデフォルトでは /etc/passwd や
# /etc/aliases、およびそれと同等のものに書かれた全ての受信者を
# 検索する UNIX 互換の配送エージェントです。
#
# デフォルトは $myhostname + localhost.$mydomain です。メールドメイン
# ゲートウェイでは、$mydomain も含めるべきです。
#
# バーチャルドメインの名前を指定してはいけません - それらのドメインは
# 別の場所で指定します (VIRTUAL_README 参照)。
#
# このマシンが、あるドメインのバックアップMXホストであれば、
# そのドメインは指定してはいけません。これらの名前は SMTP サーバに
# 対して relay_domains を指定するか、あなたが怠惰であれば
# permit_mx_backup を使います(STANDARD_CONFIGURATION_README 参照)。
#
# ローカルマシンは常に user@[the.net.work.address] (the.net.work.address
# はメールシステムが受け取るメールが入ってくるインターフェースのもの)
# 宛のメールの最終到達地です。
#
# ホストやドメイン、/file/name もしくは type:table 形式でリストを指定し、
# カンマか空白文字で区切ります。/file/name 部分はその中身で置き換えられ
# ます。type:table は名前が検索キーにマッチしたときにマッチします
# (右側の部分は無視されます)。長い行は次の行を空白で始めることで、
# 継続行として扱われます。
#
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain


# 「信頼とリレー制御」

# mynetworks パラメータには "外部(クライアント)" よりも多くの権限を
# 持つ "信頼された" SMTP クライアントのリストを指定します。
#
# 特に "信頼された" SMTP クライアントはPostfixを通してメールを
# リレーすることが許されます。postconf(5) の
# smtpd_recipient_restrictions パラメータを参照してください。
#
# "信頼された" ネットワークアドレスのリストを手で指定することも
# できますし、Postfixに任せることもできます(こちらがデフォルト)。
#
# デフォルトでは (mynetworks_style = subnet)、Postfixは同じ IP
# サブネットワークにある SMTP クライアントをローカルマシンとして
# "信頼" します。
# Linux では、これは "ifconfig" コマンドで指定されたインターフェース
# の場合にのみ正確です。
#
# Postfixが同じ IP クラス A/B/C ネットワーク内の SMTP クライアントを
# ローカルマシンとして "信頼" すべき時は "mynetworks_style = class"
# を指定してください。
# ダイアルアップサイトではこれを指定しないでください - Postfixが
# プロバイダのネットワーク全体を "信頼" してしまいます。かわりに
# 下に示すように mynetworks リストを手で指定してください。
#
# Postfixがローカルマシンのみを "信頼" すべき場合は
# "mynetworks_style = host" を指定してください。
# 
mynetworks_style = subnet


# 代わりに、mynetworks リストを手で指定することもできます。この場合は
# Postfixは mynetworks_style の設定を無視します。
#
# network/netmask パターンのリストを明示的に指定してください。ここで
# mask にはホストアドレスのネットワーク部分をビット数で指定します。
#
# ここでパターンのリストを指定する代わりにパターンファイルの絶対パスを
# 指定することもできます。テーブルベースの検索には type:table を
# 指定してください (テーブルの右側の値は使われません)。
#
mynetworks = 192.168.0.0/24, 127.0.0.0/8


# relay_domains パラメータはこのメールシステムがどの目的地にメールを
# リレーするかを制限します。詳細な情報は postconf(5) の
# smtpd_recipient_restrictions の記述を参照してください。
#
# デフォルトでは、Postfixは
# - ($mynetworks にマッチする IP アドレスを持つ)「信頼された」
#   クライアントから全ての目的地へ
# - 「信頼されていない」クライアントから、$relay_domains または
#   そのサブドメインにマッチする目的地へ、送信者が指定した
#   ルーティングのアドレスを除いて
# リレーをします。デフォルトでは、relay_domains は $mydestination です。
# 
# 上に加えて、Postfix SMTP サーバはデフォルトで最終目的地が
# - 目的地が $inet_interfaces または $proxy_interfaces にマッチするもの
# - 目的地が $mydestination にマッチするもの
# - 目的地が $virtual_alias_domains にマッチするもの
# - 目的地が $virtual_mailbox_domains にマッチするもの
# のメールを受け取ります。これらの目的地は $relay_domains に挙げられて
# いる必要はありません。
# 
# ホストやドメイン、/file/name パターンや type:name 検索テーブルの
# リストを、カンマか空白文字で区切って指定します。
# 長い行は次の行を空白で始めることで、継続行として扱われます。
# ファイル名はその中身で置き換えられます。type:table は(親)ドメインがが
# 検索キーとして現れた時にマッチします。
#
# 注意: Postfixは自動的にはこのシステムをプライマリもしくはバックアップ
# MX ホストに挙げているドメインに対してメールを転送しません。
# postconf(5) の permit_mx_backup 制限の記述を参照してください。
#
relay_domains = $mydestination


# エイリアスデータベース
#
# alias_maps パラメータにはローカル配送エージェントが利用するエイリアス
# データベースのリストを指定します。デフォルトのリストはシステムに依存
# します。
#
# NIS を利用したシステムでは、デフォルトはローカルのエイリアス
# データベースを検索し、次に NIS のエイリアスデータベースを検索します。
# 文法の詳細は aliases(5) を参照してください。
# 
# エイリアスデータベースを変更したら、"postalias /etc/aliases"(もしくは
# あなたのシステムがメールエイリアスファイルを格納している場所)を
# 実行するか、単に "newaliases" を実行して、必要な DBM または DB
# ファイルを構築します。
#
# 変更が反映されるまで少し時間がかかります。"postfix reload" を
# 実行すると、その遅延がなくなります。
#
alias_maps = hash:/etc/aliases

# alias_database パラメータには "newaliases" または "sendmail -bi"
# で構築されたエイリアスデータベースを指定します。alias_maps (上述)は
# Postfixがすべてコントロールする必要がないテーブルを指定するかも
# しれないため、これは別の設定パラメータになっています。
#
alias_database = hash:/etc/aliases


# メールボックスへの配送
#
# home_mailbox パラメータには、オプションでメールボックスファイルのパス
# 名を、ユーザのホームディレクトリからの相対パスで指定します。
# デフォルトのメールボックスファイルは /var/spool/mail/user か
# /var/mail/user です。qmail形式の配送は "Maildir/" (/ が必要) を
# 指定します。
home_mailbox = Maildir/


# 「インストール時設定情報」
#
# 次のパラメータは新しいPostfixバージョンのインストール時に使われます。
#
# sendmail_path: Postfix sendmail コマンドのフルパス名。
# これは Sendmail 互換のメール投函インターフェースです。
#
sendmail_path = /usr/sbin/sendmail

サーバ情報の非表示設定をします。
サーバー情報をそのまま出力してしまうと、悪意のある第三者に悪用される可能性を高めてしまいます。
そこでサーバー情報を出力しない設定を行います。

# 「ソフトウェアのバージョンを示すか否か」
#
# smtpd_banner パラメータには、SMTP サーバの greeting バナーで 220
# コードに続くテキストを指定します。メールのバージョンが示されるのを
# 好む人もいます。デフォルトでは、Postfixはバージョンを示しません。
#
# $myhostname をテキストのはじめに指定「しなければいけません」。
# これは RFC が要求しています。Postfix自身は構いません。
#
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)

この箇所に追記します。

smtpd_banner = $myhostname ESMTP

SMTP-AUTH(sasl2)を用いた設定

SMTP-AUTH(sasl2)を利用する場合、下記の内容を main.cf へ追記します。

# AMTP-AUTH(sasl2)関係の設定追加分です
#
# SMTPサーバ設定(SASLによるSMTP認証)
smtpd_sasl_auth_enable = yes

# 使用可能な認証設定
# noanonymous : 匿名接続を拒否
# noplaintext : PLAIN認証拒否(Outlook ExpressはPLAIN認証のみ対応)
#smtpd_sasl_security_options = noanonymous, noplaintext

# ローカル認証の名前設定
smtpd_sasl_local_domain = $mydomain

# リレーを許可の設定
# -permit_mynetworks : mynetworksで指定されたネットワークからリレーを許可
# -permit_sasl_authenticated : SMTP認証を通過したものは許可
# -reject_unauth_destination : 目的地が $inet_interfaces、$mydestination $virtual_alias_domains
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

# AUTHコマンドが未サポートのクライアント対応
# Outlook Express4 / Exchange5 etcはAUTHコマンドのサポートを認識できないため使用時は下記の設定を追加
broken_sasl_auth_clients=yes

smtpd_client_restrictions = permit_mynetworks, reject_unknown_client, permit

smtpd_client_restrictions については

  • permit_mynetworks:クライアントが $mynetworks に属しているIPの場合は要求を許可(permit)する
  • reject_unknown_client:クライアントがDNSにPTRレコードを持たないIPの場合に要求を拒否(reject)する というないようです。
    運用スタイルに合わせて設定を追加してください。

メールに記載されるメールアドレスを user_account@mail.XXXXXX.XXX といった @mail.~ の前述した myhostname にする場合は下記のように変更してください。

  • smtpd_sasl_local_domain = $myhostname

携帯メール対策

携帯電話各社にメールを送る場合いろいろ制限がかかっていて、、自宅サーバ(動的IP)の postfix からメールが届かないことがあります。
これら宛のメールはプロバイダのメールサーバにリレーして送信するように main.cf へ設定をします。

transport_maps = hash:/etc/postfix/transport

smtp_sasl_password_maps = hash:/etc/postfix/provider_mail

次に /etc/postfix/provider_mail を新規に作成して プロバイダ のメール設定を記述します。

# vi /etc/postfix/provider_mail


smtp.provider.ne.jp   mail_id:password

最後に携帯メールのリレー用に /etc/postfix/transport に、下記内容を追加します。
[  ] 内には契約しているプロバイダのSMTPサーバを記述する。

docomo.ne.jp          :[smtp.provider.ne.jp]
.docomo.ne.jp         :[smtp.provider.ne.jp]
ezweb.ne.jp           :[smtp.provider.ne.jp]
.ezweb.ne.jp          :[smtp.provider.ne.jp]
vodafone.ne.jp        :[smtp.provider.ne.jp]
.vodafone.ne.jp       :[smtp.provider.ne.jp]

ここでOutbound Port 25 Blocking対策で別のポート番号を指定されている場合は、SMTPサーバー名の後ろにポート番号を記述してください。

例 docomo.ne.jp          :[smtp.provider.ne.jp]:587

postmap で作成したリレーデータを反映させてtransport.dbを作成する。

# postmap /etc/postfix/transport

VRFYコマンドの禁止

SMTPのコマンドにVRFY(メールアドレス確認)というものがあります。
悪質なプログラムよりアカウント走査という悪用を防ぎます。

disable_vrfy_command = yes

OP25B(Outbound Port25 Blocking)対策

前述の「携帯メール対策」と同様に、今まで送信できていたが急に送れなくなってしまう場合あります。
そんな場合は以下の設定を試して下さい。
submission port に port 25 の換わりに port 587 を使用して配送する設定になります。

master.cf postfix設定ファイル

postfix設定ファイル /etc/postfix/master.cf の修正

# vi /etc/postfix/master.cf

下記のようにコメントアウトしてある部分の # をはずして有効にします。

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#submission inet n       -       n       -       -       smtpd
#  -o smtpd_enforce_tls=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps     inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

  ↓  ↓

smtp      inet  n       -       n       -       -       smtpd
submission inet n       -       n       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps     inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

header_checksの修正

メールのヘッダー部(Received行)ローカルIPアドレスが表示されないように設定を変更します。
※[192\.168.*\]の箇所は各自のローカルネットワークの環境に合わせて変更してください。

# vi /etc/postfix/header_checks


/^Received:\sfrom .*\[127\.0\.0\.1\]|^Received:\sfrom .*\[192\.168.*\]/ IGNORE

変更を反映させます。

# postalias /etc/postfix/header_checks

aliasesの修正

RPM(パッケージ)でインストールするとroot宛てのメールはpostfix宛てに配送されます。
一般ユーザ宛に転送するには /etc/aliases に対して下記を追記します。

# vi /etc/aliases


root: UserName

最後に newaliases を実行し反映させます。

# newaliases

sasl2の設定

SMTP-AUTHの方法はいくつかありますが、ここではsasl2を利用した認証方式を使用します。
この方法は UNIXのshadowパスワードとは別にパスワードを使用することができるで、セキュリテイ的にも向上します。

  • /usr/lib/sasl2/smtpd.conf を sasldb2 で行うように変更します。
    pwcheck_method: auxprop
  • パスワードデータベースを作成。
    パスワード作成は、以下のように行います。
    HostNmaeには main.cf で設定した $myorigin と同一のドメイン(ホスト)名を指定すること。
    一致しないと認証に失敗します。
    # saslpasswd2 -c -u HostName UserName
    パスワードを削除する場合
    # saslpasswd2 -d -u HostName UserName
    パスワードの確認する場合
    # sasldblistusers2
    UserName@mail.mydomain.com: userpassword
  • Postfixでsasldbを利用できるようにグループを変更し、パーミッションを変更します。
    # chgrp postfix /etc/sasldb2
    # chmod 640 /etc/sasldb2

自動起動設定

自動起動用のスクリプト(RPMで用意されているもの)を入手します。
(同様のものを用意しました。解凍して使ってください。postfix.zip)
/etc/rc.d/inid.d 配下に postfix の名前で保存します。
実行パーミッションおよび、自動起動の登録を行います。

# chmod +x postfix
# chkconfig --add postfix
# chkconfig postfix on
# chkconfig --list postfix
postfix      0:off  1:off   2:on   3:on   4:on   5:on   6:off

Postfixを起動させます。

# /etc/rc.d/init.d/postfix start

起動後の動作ポート確認

nmapを使って現在動作しているポートを表示します。
いくつか表示されると思います。

# nmap localhost

下記はMTAに関するポートだけを抜粋して記載しています。

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2007-05-14 15:03 JST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1661 closed ports
PORT     STATE SERVICE

25/tcp   open  smtp

110/tcp  open  pop3

143/tcp  open  imap

587/tcp  open  submission

993/tcp  open  imaps
995/tcp  open  pop3s


Nmap finished: 1 IP address (1 host up) scanned in 0.218 seconds

送信テスト

ここまで設定が完了し、正常にpostfixが起動できたら、実際に送信してみます。
はじめは、わざとSMTP-AUTHの設定を メールクライアントソフト(Outlook Express、Outlook、Thunderbird etc) に行わないノーマル設定で送信してみてください。
送信不可となるはずです。
もしここで送信できてしまう場合はSMTP-AUTHが機能していないことになります。

次に SMTP(送信時)の認証の設定を行ってメールを送信してみます。
適切に設定ができていればメールは送信できます。
もしなんらかの設定に不備があれば送信不可となるでしょう。

ログを見て確認することも忘れないように。

# cat /var/log/maillog

下記のようなログが残っていればOKです。
(注:このログは外部からメール送信を行った場合です。)

(略): connect from XXXXXXXX.ne.jp[XXX.XXX.XXX.XXX]
(略): 826B7A083D3: client=XXXXXX.ne.jp[XXX.XXX.XXX.XXX], sasl_method=CRAM-MD5, sasl_username=XXXXX@DOMAIN-NAME
(略): 826B7A083D3: message-id=<4647BBF9.6010601@DOMAIN-NAME>
(略): 826B7A083D3: from=<XXXXXX@DOMAIN-NAME>, size=744, nrcpt=1 (queue active)
(略): 826B7A083D3: to=<XXXXXX@docomo.ne.jp>, relay=XXX.XXXXX.net[XXX.XXX.XXX.XXX]:587, delay=0.47, delays=0.14/0.01/0.04/0.29, dsn=2.0.0, status=sent (250 Ok: queued as E951FD9066)
(略): 826B7A083D3: removed

DOMAIN-NAME は main.cf で smtpd_sasl_local_domain = $mydomain で設定されたドメイン名が入ります。
注目するところは2行目の

sasl_method=CRAM-MD5, sasl_username=XXXXX@DOMAIN-NAME

です。
メール送信を行った際に、このような記述にならない場合は設定不備が考えられます。

適切な認証(sasl2db関係)設定がされていない場合や外部からの不正利用の場合、認証が行われないため下記のようなログが残ります。

(略) warning: XXXXXXXXXXX.net[XXX.XXX.XXX.XXX]: SASL LOGIN authentication failed: authentication failure

不正中継確認

下記のサイトで不正中継のチェックなどを行っています。
よく利用方法・注意書きを読んで利用してください。
すべてのチェックをクリアできるようにしましょう。
SPAMメールの中継として悪用されたりしますので、しっかり確認・チェックを行ってください。

NETWORK ABUSE CLEARINGHOUSE[Mail relay testing] http://www.abuse.net/relay.html
RBL.JP http://www.rbl.jp/

SSL用証明書の更新

運用を続けていくと下記のようなアラートが maillog に出てくることがあります。

warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
fatal: No server certs available. TLS can't be enabled

SSL用証明書の期限が過ぎたり、作成していなかった場合、設定の不備のときに出ます。

ここではSSL用証明書の更新という対処方法を紹介します。
この他に原因としては main.cf の設定不備、openSSLの不備も考えられます。
「今まで正常に運用できていたのに、アラートが出始めた」
というときの一つの対処方法としてご利用ください。

まず秘密鍵、公開鍵を作成しなおします。

# cd /etc/pki/tls/certs

既存の秘密鍵の削除

# rm -rf server.key

新しい秘密鍵の作成

# make server.key

下記の内容が表示されますので、必要箇所入力してください。

umask 77 ;
/usr/bin/openssl genrsa -des3 1024 > server.key
Generating RSA private key, 1024 bit long modulus
..............................................++++++
................++++++
e is 65537 (0x10001)
Enter pass phrase: パスワード入力
Verifying - Enter pass phrase: パスワード再入力

パスワード削除

# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: パスワード入力
writing RSA key

公開鍵の作成

# make server.csr

下記の内容が表示されますので、必要箇所入力してください。

umask 77 ;
/usr/bin/openssl req -utf8 -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:(国名 ex:JP)
State or Province Name (full name) [Berkshire]:(都道府県名 ex:Tokyo)
Locality Name (eg, city) [Newbury]:(市区町村 ex:Minato-ku)
Organization Name (eg, company) [My Company Ltd]:(組織名 ex:YOUR_DOMAIN.XXX)
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:(サーバー名 ex:YOUR_DOMAIN.XXX)
Email Address []:(メールアドレス)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ENTER
An optional company name []: ENTER

次に有効期限付サーバー証明書作成

# openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365 
Signature ok
subject=/C=(入力した国名)/ST=(入力した都道府県名)/L=(入力した市町村区)/O=(入力した組織名)/OU=(入力した部署名)/CN=(入力したサーバー名)/emailAddress=(入力したメールアドレス)
Getting Private key

パーミッションの設定

# chmod 400 server.*

これで対応は完了です。
postfixを再起動します。

# /etc/init.d/postfix restart


Last-modified: 2015-04-23 (木) 15:35:22 (1187d)