Postfixの設定


  • 前提条件
    メールボックスはMaildir形式とし、内部ネットワークからのみ送信を行えるようにします

main.cfの編集

/etc/postfix/main.cfを編集します

自ホスト名の設定

#myhostname = virtual.domain.tld
myhostname = mail.hoge.net

自ドメイン名の設定

#mydomain = domain.tld
mydomain = hoge.net

ローカル宛に送信する時に@以降に付与するドメイン名

#myorigin = $myhostname
myorigin = $mydomain

受信するネットワーク許可設定

#inet_interfaces = $myhostname, localhost
inet_interfaces = all

ローカルで受信するドメイン名

#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydestination = $myhostname, localhost.$mydomain, $mydomain

メール中継が可能なネットワーク指定

不正中継を防止する為ローカルネットワークからのみ許可します

#mynetworks = 168.100.189.0/28, 127.0.0.0/8
mynetworks = 192.168.1.0/24, 127.0.0.0/8

ユーザーのメールボックスの設定をMailDir形式にする

#home_mailbox = Mailbox
home_mailbox = Maildir/

alias_maps - alias(別名)定義マップの指定

#alias_database = dbm:/etc/mail/aliases
alias_database = hash:/etc/aliases

メールサーバーソフト名の隠蔽化設定

#smtpd_banner = $myhostname ESMTP $mail_name
smtpd_banner = $myhostname ESMTP unknown

SPAMメール拒否設定~

基本的な対策のみなので、SPAMメールがすり抜けることがあります。SpamAssassinなどと組み合わせて下さい。

  • 送信元サーバにHELO/EHLOを要求する
    smtpd_helo_required = yes
    
  • HELOで宣言するホスト名が不正なものは拒否
    smtpd_helo_restrictions = permit_mynetworks,
                              reject_invalid_helo_hostname,
                              permit
    
  • RBL.JPのブラックリストを利用しSPAM判定
    ウイルス送信者と否常時接続回線からのSPAMを遮断
    データベースは2日でクリアされている

    また、check_client_accessで特定のホストやIPアドレスを制限する
    制限するリストは/etc/postfix/reject_clientファイル内で指定する
    (ファイルはpostmapコマンドでDB化する事)
    smtpd_client_restrictions = permit_mynetworks,
                                reject_rbl_client all.rbl.jp,
                                check_client_access hash:/etc/postfix/reject_client
                                permit
    
    • 制限リストの記述例
      192.168 REJECT
      hogehoge.com REJECT
      
  • MAIL FROM内で不正なものを拒否する(詳細)
    check_sender_accessでMAIL FROMアドレスやドメインを制限する
    制限するリストは/etc/postfix/reject_addrファイル内で指定する
    (ファイルはpostmapコマンドでDB化する事)
    smtpd_sender_restrictions = permit_mynetworks,
                                reject_unknown_sender_domain,
                                reject_non_fqdn_sender,
                                check_sender_access hash:/etc/postfix/reject_addr
                                permit
    
    • 制限リストの記述例
      hogehoge.com REJECT
      aaa@bbb.ccc.com REJECT
      aaa@hogehoge.com OK
      
  • 自サーバ内のメールアドレス収集を拒否
    disable_vrfy_command = yes
    

root宛のメールを一般ユーザーへ転送

root宛てに配送されるメールを一般ユーザーに転送します。転送するユーザー名をhogehogeとする場合
/etc/aliasesファイルの最終行に以下を追加

root: <送信先アドレス or アカウント名>

編集終了後に下記コマンドを入力し設定を有効化する

newaliases


SMTP-Auth設定

メール送信時にもユーザー認証を実施させる場合

  • SMTP AUTH(SMTP認証)の設定
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous
    smtpd_sasl_local_domain = $myhostname
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
    
  • SMTP-Authを起動
    /etc/rc.d/init.d/saslauthd start
    
  • ユーザーのSMTP-Authパスワード設定
    /usr/sbin/saslpasswd2 -c [ユーザー名] -u [ドメイン名]
    パスワードを2回入力する
    
  • 登録ユーザーの確認
    /usr/sbin/sasldblistusers2
    
  • SMTP-Authデータベースのアクセス権を変更
    chgrp postfix /etc/sasldb2
    chmod 640 /etc/sasldb2
    
  • SMTP-Authの自動起動設定 テストで問題がないようであれば自動起動するよう設定する
    /sbin/chkconfig --level 35 saslauthd on
    

MTAの切り替え

標準のsendmailからpostfixにMTAを切り替える

alternatives --config mta
----------------------------------------------
*  1           /usr/sbin/sendmail.sendmail
 + 2           /usr/sbin/sendmail.postfix

postfixの番号を入力する(+印が付いている方が現在の標準MTA)


Postfix自動起動設定

/sbin/chkconfig --level 35 postfix on


不正中継防止テスト

メールサーバの不正中継のチェックを行う。下記のURLへアクセスして不正中継できない事を確認する。
Mail relay testing
RBL.JPプロジェクト
それぞれのページで、自分のFQDN名を入力すると不正中継のテストを自動で行ってくれる。
全ての項目で中継できないことを確認する。

メールキューの操作について

メールキューの一覧表示

/usr/sbin/postqueue -p
もしくわ
mailq

メールキューに残っているメールの削除

/usr/sbin/postsuper -d "メールキューID"
全てのメールを一括削除するには
/usr/sbin/postsuper -d ALL

メールキューのメールを配送されないようにする

/usr/sbin/postsuper -h "メールキューID"
全てのメールを一括停止するには
/usr/sbin/postsuper -h ALL

メールキューのメールを強制配信する

/usr/sbin/postqueue -f


送信元メールアドレスを変更する方法

Postfix上でメールの送信元アドレスの書き換えを行う場合
main.cf内に下記を記述します

smtp_generic_maps = hash:/etc/postfix/generic

/etc/postfixディレクトリにgenericファイルを作成し、下記内容を記述します
例では、ドメイン名hoge.netをhogenet.jpに書き換えます

@hoge.net @hogenet.jp

postmapコマンドを実行しデータベースを作成します

postmap /etc/postfix/generic

最後にPostfixを再起動します

メールサーバとメールクライアントのやりとりについてはこちらを参照

最終更新:2010年09月20日 22:42