Postfixの設定(迷惑メールフィルタ対応)
はじめに
WebARENAのVPSのCentOS5(迷惑メールフィルタ対応)では、迷惑メールフィルタを実装するために、Postfixの パッケージがアンインストールされ、以下のパッケージがインストールされています。
sbassdk-6.10-0.i386.rpm
scanmail-4.9-EL4-p-antispam.i386.rpm
- 迷惑メールフィルタを動作させる為、scandbというサービスを利用いたします。 メールを利用する際にはpostfixとあわせてscandbも起動してご利用ください。
- 設定内容については、CentOS標準のPostfix2.3ベースではなく Postfix2.5がベースとなります。
Postfixの機能・設定についてすべてを保証するものではございません。 - MTAにSendmail等、他のソフトウェアを使用いたしますと、迷惑メールフィルタが動作いたしません。
- postfixの起動、停止等につきましては"start"と"stop"のみご利用いただけます。"reload"や"restart"はご利用頂けません。
- 迷惑メールフィルタの仕様につきましては迷惑メールフィルタの仕様をご参照ください。
設定する内容
このマニュアルでは、例として以下のようなご利用形態を前提として記述しております。 メールサーバーに設定する内容はお客さまのご利用形態によって変わりますが、 オンラインマニュアルに記載されていない設定については弊社のサポート対象外となります。
この例と異なるご利用形態でお使いになる場合はPostfixの設定方法について解説されている書籍・Webサイトなどをご参考に お客さまにて設定ファイルの内容を書き換えてご利用下さい。
- VPS上に example.com というアドレスのメールサーバーを構築する。
- メールサーバーのセキュリティ対策としてSMTP認証を使えるように設定し、メール送信用のSMTPサーバーとして使用できるようにする。
- POP3およびIMAP4でメールが受信できるようにする。
- スプールの形式をMaildir形式にする。
- 「example.com」というドメイン名でVPSにアクセスするためのDNSの設定と「******@example.com」あてのメールをVPSに配送するためのDNSの設定は完了している。
Postfixの設定手順
Postfixの設定手順は以下の通りです。
1.ログイン
サーバーにSSHで接続し、rootアカウントを使用してログインします。
2.viなどのテキストエディタで /etc/postfix/main.cf ファイルを開いて下さい。
viで /etc/postfix/main.cf ファイルを開くコマンドは以下の通りです。
[root@localhost ~]# vi /etc/postfix/main.cf
main.cfファイルには多くの設定項目が書かれていますが、以下では最低限設定しておいた方がよいと思われる項目をご案内致します。
- myhostnameの項目とmydomainの項目にはこのホストのホスト名とドメイン名を設定します。 ここではexample.comというドメイン名で使用しますので、両方とも example.com を設定します。
# INTERNET HOST AND DOMAIN NAMES # # The myhostname parameter specifies the internet hostname of this # mail system. The default is to use the fully-qualified domain name # from gethostname(). $myhostname is used as a default value for many # other configuration parameters. # #myhostname = host.domain.tld #myhostname = virtual.domain.tld myhostname = example.com
# The mydomain parameter specifies the local internet domain name. # The default is to use $myhostname minus the first component. # $mydomain is used as a default value for many other configuration # parameters. # #mydomain = domain.tld mydomain = example.com
- inet_interfacesの項目には利用するインタフェースを設定します。
VPSの仕様上、この項目には「all」という値を設定する必要があります。 「inet_interfaces = all」の行頭に書かれている # を外してこの行を有効にして下さい。# The inet_interfaces parameter specifies the network interface # addresses that this mail system receives mail on. By default, # the software claims all active interfaces on the machine. The # parameter also controls delivery of mail to user@[ip.address]. # # See also the proxy_interfaces parameter, for network addresses that # are forwarded to us via a proxy or network address translator. # # Note: you need to stop/start Postfix when this parameter changes. # inet_interfaces = all (←行頭にある # を削除) #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost
- また、スプールをMaildir形式にする指定を行います。
# "Maildir/" for qmail-style delivery (the / is required). # #home_mailbox = Mailbox home_mailbox = Maildir/ (←行頭にある # を削除する)
- さらにメール送信用サーバーとして使用できるようにするため、SMTP認証の設定を追加します。main.cf ファイルの末尾に以下の3行を追加して下さい。
smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination
書き換えが終了したらファイルを保存してテキストエディタを終了して下さい。 - 以下のコマンドを実行してSMTP認証用のアカウントとパスワードを作成して下さい。 ※迷惑メールフィルタ対応のPostfixでは、SMTP認証を行う場合には下記作業が必須となります。
SMTP認証用のアカウント・パスワードはSSH・FTP・POP3・IMAP4の認証時に参照される情報とは別に管理されます。
[root@localhost ~]# saslpasswd2 -u ホスト名 アカウント名 Password:(パスワード) Again (for verification):(パスワード)
たとえばお客さまのホスト名が「example.com」で、「nttpc」というSMTP認証用のアカウントを作成する場合は以下のコマンドを実行します。[root@localhost ~]# saslpasswd2 -u example.com nttpc Password:(nttpcのSMTP認証用パスワード) Again (for verification):(nttpcのSMTP認証用パスワード)
複数のSMTP認証認証用アカウントを作成したい場合は作成するアカウントの個数分繰り返して実行して下さい。
さらに作成した認証用アカウントの情報をpostfixが参照できるように、以下のコマンドを実行します。[root@localhost ~]# chown postfix /etc/sasldb2
- これで基本設定は完了ですが、CRAM-MD5方式でSMTP認証の認証を行いたい場合は 以下コマンドを実行し、CRAM-MD5用のパッケージをインストールして下さい。
[root@localhost ~]# yum install cyrus-sasl-md5.i386
途中、確認の"Is this ok "ではyでインストールを進めて下さい。Is this ok [y/N] y
作業が成功すると、"complete"が表示されます。Complete!
4.以下のコマンドを実行し、Postfix、scandb、saslauthdを起動して下さい。
[root@localhost ~]# service postfix start [root@localhost ~]# service scandb start [root@localhost ~]# service saslauthd start
自動起動の設定
OSの再起動と同時にpostfix、scandb、saslauthdを自動起動したい場合は、chkconfig でpostfix、scandb、saslauthd をon に設定して下さい。
chkconfig の設定方法は、オンラインマニュアル内 サービスの自動起動設定に掲載しておりますのでご参照下さい。
エイリアス設定
「info」や「support」など、いくつかのよく使われるアカウント名やシステムが使用するアカウント名については初期状態でエイリアス設定が行われており、 そのアカウント宛てのメールは別のアカウントのメールボックスに転送されるようになっています。初期状態でエイリアス設定が行われているアカウント名は以下の通りです。
このままの状態では info@(ドメイン名) 宛てのメールが「info」のメールボックスに配送されないため、「info」を通常のメールアカウントとして使用することが出来ません。 通常のメールアカウントとして使用する場合はエイリアス設定を変更して転送を停止して下さい。
エイリアス設定を変更する手順は以下の通りです。
- viなどのテキストエディタで /etc/aliases ファイルを開いて下さい。viで /etc/aliases ファイルを開くコマンドは以下の通りです。
[root@localhost ~]# vi /etc/aliases
-
(転送元アカウント名): (転送先アカウント名)という形式で1行につき1つのエイリアス設定が書かれています。 行頭に「#」が書いてある行はコメント行とみなされ無効になりますので、エイリアス設定による転送を停止したい場合は行頭に「#」を付けて下さい。 たとえば、アカウント「info」のエイリアス設定を無効にする場合は以下のように「info: postmaster」行の行頭に「#」を記述します。
#info: postmaster
書き換えが終了したらファイルを保存してテキストエディタを終了して下さい。 - 以下のコマンドを実行し、書き換えた内容を有効にして下さい。
[root@localhost ~]# newaliases
上記の設定を行った後、通常のメールアカウントと同様にメールの送受信が行えることをご確認下さい。
バーチャルドメイン設定
Postfixのバーチャルドメイン機能を使用すると、1つのVPS上でドメイン名が異なる複数のメールサーバーを運用することが出来ます。
Postfixの設定を行う前にネームサーバーで複数のドメインを使用するための設定を行っておく必要がありますので、 あらかじめbindの設定 - バーチャルドメイン設定 に記載されているバーチャルドメインの設定を行っておいて下さい。
以降の説明は、例として以下のようなご利用形態を前提として記述しています。
- このページのPostfixの設定手順に記載されている設定が完了しており、example.com というドメイン名のメールサーバーとして使用することは出来る状態になっている。
- ******@mail.example.com というメールアドレス宛てのメールをこのVPS(example.com)に配送するためのネームサーバー設定は完了している。
Postfixのバーチャルドメイン設定にはいくつかの方法がありますが、ここでは2通りの設定方法をご案内致します。
[ ドメインごとにユーザを区別しない設定 ]
異なるドメインでもユーザ名が同じ宛先のメールは同一のアカウントのメールボックスに配送される設定です。
例えば example.com と mail.example.com を使用できるように設定した場合、nttpc@example.com と nttpc@mail.example.comのどちらにメ ールを送信してもアカウント「nttpc」のメールボックスにメールが配送されるようになります。
この場合の設定手順は以下の通りです。
- サーバーにSSHで接続し、rootアカウントを使用してログインします。
- viなどのテキストエディタで /etc/postfix/main.cf ファイルを開いて下さい。viで /etc/postfix/main.cf ファイルを開くコマンドは以下の通りです。
[root@localhost ~]# vi /etc/postfix/main.cf
mydestinationの項目に追加するドメイン名を設定します。ここではmail.example.comというドメイン名を追加しますので、 行頭の「#」を削除し、行の末尾に「,」(カンマ)で区切って mail.example.com を追加します。# The mydestination parameter specifies the list of domains that this # machine considers itself the final destination for. # # ・ # ・ #(中略) # ・ # ・ # # See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS". # mydestination = $myhostname, localhost.$mydomain, mail.example.com(← 行頭の # は削除) #mydestination = $myhostname, localhost.$mydomain $mydomain #mydestination = $myhostname, localhost.$mydomain, $mydomain, # mail.$mydomain, www.$mydomain, ftp.$mydomain
書き換えが終了したらファイルを保存してテキストエディタを終了して下さい。 - 以下のコマンドを実行し、書き換えた内容を有効にして下さい。
[root@localhost ~]# service postfix stop [root@localhost ~]# service postfix start
- 使用しているアカウント宛てにメールを送信し、どちらのドメインのメールアドレスに送ってもメールが受信できることを確認して下さい。 例えば、「nttpc」というユーザアカウントをメールの受信に使用している場合 nttpc@example.com と nttpc@mail.example.com に1通ずつメールを送信し、「nttpc」のメールボックスに両方のメールが届けばバーチャルドメインが正しく動作していることを確認出来ます。
[ ドメインごとにユーザを区別する設定 ]
宛先のアドレスごとに配送されるメールボックスを個別に指定することが出来る設定です。 例えば example.com と mail.example.com を使用できるように設定した場合、 nttpc@example.com 宛てのメールと nttpc@mail.example.com 宛てのメールが配送されるメールボックス(アカウント)を個別に指定することが出来ます。
この場合の設定手順は以下の通りです。
- サーバーにSSHで接続し、rootアカウントを使用してログインします。
- viなどのテキストエディタで /etc/postfix/main.cf ファイルを開いて下さい。viで /etc/postfix/main.cf ファイルを開くコマンドは以下の通りです。
[root@localhost ~]# vi /etc/postfix/main.cf
ファイルの末尾に以下の2行を追加します。「virtual_alias_domains」の行に追加するドメイン名を記述して下さい。 ここではmail.example.comというドメイン名を追加しますので、「=」の右側に mail.example.com を記述しています。追加したいドメイン名が複数ある場合は「,」(カンマ)で区切って複数のアドレスを記述して下さい。virtual_alias_domains = mail.example.com virtual_alias_maps = hash:/etc/postfix/virtual
なお、この状態ですと、メールログ(/var/log/maillog)に「BOTH virtual_alias_domains and relay_domains」というwarningが出るため、 以下設定を末尾に記述して頂くことをお勧めいたします。parent_domain_matches_subdomains = debug_peer_list, fast_flush_domains, mynetworks, permit_mx_backup_networks, qmqpd_authorized_clients, smtpd_access_maps
CentOS5のpostfixでは、初期状態で「parent_domain_matches_subdomains」ディレクティブにパラメータdebug_peer_list、 fast_flush_domains、mynetworks、permit_mx_backup_networks、qmqpd_authorized_clients、 relay_domains、smtpd_access_mapsが設定されております。書き換えが終了したらファイルを保存してテキストエディタを終了して下さい。
オンラインマニュアル通りにバーチャルドメインにサブドメインをご利用の場合、設定ファイル /etc/postfix/virtual と「virtual_alias_domains」ディレクティブで 設定されているドメインが重複することが原因で warning が出るようです。
そのため、「parent_domain_matches_subdomains」からパラメータ「relay_domain」を除いた設定を明示的に記載することで、warning を回避します。
main.cfのパラメータにつきましては「postconf」コマンドでご確認下さい。 - viなどのテキストエディタで /etc/postfix/virtual ファイルを開いて下さい。viで /etc/postfix/virtual ファイルを開くコマンドは以下の通りです。
[root@localhost ~]# vi /etc/postfix/virtual
このファイルには、「このメールアドレスに来たメールをこのアカウントのメールボックスに配送する」という設定を記述します。 ファイルの末尾に以下の形式で設定を記述して下さい。(メールアドレス) (アカウント)
複数の設定を記述する場合は1行につき1つの設定を記述します。
例えば nttpc@example.com 宛てのメールはユーザアカウント「user1」のメールボックスに、nttpc@mail.example.com 宛てのメールはユーザアカウント「user2」のメールボックスに配送するように設定する場合は 以下のように記述して下さい。nttpc@example.com user1 nttpc@mail.example.com user2
※本設定例の場合、あらかじめ "user1"、"user2" というアカウントを追加 しておく必要があります。 - 以下のコマンドを実行し、書き換えた内容を有効にして下さい。
[root@localhost ~]# postmap /etc/postfix/virtual [root@localhost ~]# service postfix stop [root@localhost ~]# service postfix start
- 設定したメールアドレス宛てにメールを送信し、それぞれ設定したアカウントのメールボックスから受信できることを確認して下さい。
上記の例のように設定した場合、ユーザアカウント「user1」で受信した時に nttpc@example.com 宛てのメール、 ユーザアカウント「user2」で受信した時に nttpc@mail.example.com 宛てのメールが受信出来ればバーチャルドメインが正しく動作していることを確認出来ます。
Submissionポート設定
SPAMメール対策でOP25B(任意のホストのTCP25番ポートへの接続がブロックされる仕組み)を実施しているプロバイダから接続する場合、 標準設定のままではWebARENAのVPSを送信用SMTPサーバーとして使用できない場合があります。このような場合はSubmissionポートの設定を行うことで回避することが出来ます。
PostfixでSubmissionポートを使用する設定の手順は以下の通りです。
- viなどのテキストエディタで /etc/postfix/master.cf ファイルを開いて下さい。
viで /etc/postfix/master.cf ファイルを開くコマンドは以下の通りです。[root@localhost ~]# vi /etc/postfix/master.cf
- master.cfファイルの編集を行います。必要な箇所の # を外して、submissionポートの設定を行って下さい。
# 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 (←行頭にある # を削除) # -o milter_macro_daemon_name=ORIGINATING
「-o」の前に書かれている半角スペースは必要な記述のため削除しないで下さい。削除すると正常に動作しなくなります。書き換えが終了したらファイルを保存してテキストエディタを終了して下さい。 - 以下のコマンドを実行し、書き換えた内容を有効にして下さい。
[root@localhost ~]# service postfix stop [root@localhost ~]# service postfix start
上記の設定を行った後、メールソフトの接続先SMTPポート番号を587番に変更してメールの送信が行えることをご確認下さい。