設定 · 2 min read · Dec 31, 2025

CentOS 5.1 における Virtualmin を使用した仮想ホスティングの手引き - ページ 3

設定

Postfix の設定

はじめに

以下の機能を持つ Postfix を設定します:

  • 仮想ホスティング
  • UCE 防止
  • アンチウイルス
  • SMTP 認証
  • TLS
  • RBL
  • SPF
  • 攻撃緩和

アカウントとドメインの追加は Virtualmin を通じて設定されますが、手動でも行うことができます。この設定はリソースに優しいように設計されているため、オーバースペックでないマシンでも動作するはずです。リソースをより良く活用できるようにするために、他の多くの手引きが行っているように仮想ユーザー情報を保存するための外部データベースを使用せず、amavisd-new を実行する代わりにスパムとウイルスチェックのためにミルタを使用します。

基本設定

まず、ホスト名、メールの起源、ネットワーク、ハッシュマップスプールディレクトリなどの基本を設定します。これらの設定オプションは、特に記載がない限り /etc/postfix/main.cf に追加する必要があります。サンプル設定ファイルはこのページの最後でダウンロード可能です。

command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mydomain = example.com
myorigin = $mydomain
mynetworks = 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
canonical_maps = hash:/etc/postfix/canonical
sender_canonical_maps = hash:/etc/postfix/canonical
recipient_canonical_maps = hash:/etc/postfix/canonical
virtual_alias_maps = hash:/etc/postfix/virtual
mail_spool_directory = /var/spool/mail

Maildir

デフォルトの mbox フォーマットの代わりに、はるかに改善された maildir フォーマットを使用します:

home_mailbox = Maildir/

SASL

SMTP 認証を行うために SASL を使用しますが、Cyrus SASL は saslauthd デーモンを実行する必要があるため使用しません。代わりに dovecot sasl を使用します。IMAP と POP3 のために dovecot を実行するため、1 石 2 鳥の効果があります。

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

TLS

TLS が必要です。これにより、SMTP 認証中にプレーンテキストのパスワードが送信されないことが保証されます。TLS をサポートするサーバーは、このサーバーと安全な接続を介して通信できます。

cacert.org に署名されたサーバー証明書を作成する手順は、ここにあります。

  • TLS ランダムソースを設定します:
tls_random_source = dev:/dev/urandom
  • サーバー TLS を有効にします:
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/pki/postfix/key.pem
smtpd_tls_cert_file = /etc/pki/postfix/server.pem
smtpd_tls_CAfile = /etc/pki/postfix/root.crt
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache
  • クライアント TLS を有効にします:
smtp_use_tls = yes
smtp_tls_key_file = /etc/pki/postfix/key.pem
smtp_tls_cert_file = /etc/pki/postfix/server.pem
smtp_tls_CAfile = /etc/pki/postfix/root.crt
smtp_tls_session_cache_database = btree:/var/spool/postfix/smtp_tls_cache
smtp_tls_note_starttls_offer = yes

スパム防止

  • 有効な EHLO / HELO を要求します:
smtpd_helo_required = yes
  • メールアドレス収集攻撃を防ぎます:
disable_vrfy_command = yes
  • 拒否コードを永久に変更します(デフォルトでは postfix は一時的な失敗を示す 4xx エラーコードを発行しますが、永久的なエラーには 5xx が必要です):
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 550
unknown_local_recipient_reject_code = 550
  • 送信者アドレスの検証を設定します:
address_verify_map = btree:/var/spool/postfix/verify
smtpd_sender_restrictions = hash:/etc/postfix/sender_access
  • /etc/postfix/sender_access を作成し、以下を追加します:
#サンプル /etc/postfix/sender_access には頻繁に偽装されるドメインが含まれています
aol.com     reject_unverified_sender
hotmail.com reject_unverified_sender
yahoo.com reject_unverified_sender
gmail.com reject_unverified_sender
bigfoot.com reject_unverified_sender
  • ゾンビや壊れたクライアントからの攻撃を緩和します:
smtpd_error_sleep_time = 5s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
  • 認証されたクライアントからのパイプラインのみを許可します:
smtpd_data_restrictions = reject_unauth_pipelining
  • postfix-policyd-spf-perl をインストールし、SPF サポートを有効にします:
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.005.tar.gz  
tar xzvf postfix-policyd-spf-perl-2.005.tar.gz  
cd postfix-policyd-spf-perl-2.005  
cp postfix-policyd-spf-perl /etc/postfix/

これを /etc/postfix/master.cf に追加します:

spfpolicy unix  -       n       n       -       -       spawn user=nobody argv=/usr/bin/perl /etc/postfix/postfix-policyd-spf-perl
  • DKIM サポートを追加します:

DKIM サポートを追加する手順は、ここにあります。

  • ドメインキーサポートを追加します:

ドメインキーサポートを追加する手順は、ここにあります。

  • すべてが機能するかどうかは smtpd_recipient_restrictions オプションに依存するため、以下のように設定します:
smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination
        check_recipient_access hash:/etc/postfix/access
        reject_unknown_recipient_domain
        reject_unknown_sender_domain
        reject_unverified_recipient
        reject_non_fqdn_recipient
        reject_non_fqdn_sender
        reject_invalid_hostname
        reject_rbl_client list.dsbl.org
        reject_rbl_client zen.spamhaus.org
        reject_rbl_client l1.spews.dnsbl.sorbs.net
        reject_rbl_client combined.njabl.org
        reject_rbl_client bl.spamcop.net
        reject_rhsbl_sender dsn.rfc-ignorant.org
        reject_rhsbl_sender bogusmx.rfc-ignorant.org
        reject_rhsbl_sender rhsbl.sorbs.net
        reject_rhsbl_client dsn.rfc-ignorant.org
        reject_rhsbl_client bogusmx.rfc-ignorant.org
        reject_rhsbl_client rhsbl.sorbs.net
        check_policy_service unix:private/spfpolicy

ミルタ [SpamAssassin & ClamAV]

スパム分類には spamassassin を使用し、ウイルススキャンには clamav を使用します。リソース集約型の amavisd-new デーモンを使用する代わりに、postfix のミルタインターフェースを使用します。これは非常に効率的な方法で、clamd を実行する必要すらありません。clamav ミルタが自動的にスキャンを行います。

smtpd_milters = unix:/var/clamav/clmilter.socket unix:/var/run/spamass.sock
non_smtpd_milters = unix:/var/clamav/clmilter.socket unix:/var/run/spamass.sock

DB ファイルの作成

postmap /etc/postfix/canonical  
postmap /etc/postfix/access  
postmap /etc/postfix/virtual  
postmap /etc/postfix/sender_access

サンプル設定ファイル

  • main.cf
  • master.cf
  • canonical
  • virtual
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。