PostfixによるSMTPサーバ構築メモ


はじめに

MTAとして人気もあるPostfixのメモページ。

インストール

すみません。Debian GNU/Linux 3.0 で apt-get しますた。

設定(一般的な)

不正中継をとりあえず防ぎ、普通にメールが送れる状態までを一般的な設定としてここにメモする。以下は Debian GNU/Linux 3.0 で postfix をインストールした場合の何もいじっていない /etc/postfix/main.cf の中身。

# see /usr/share/postfix/main.cf.dist for a commented, fuller
# version of this file.

# Do not change these directory settings - they are critical to Postfix
# operation.
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
setgid_group = postdrop
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no
myhostname = debian
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = debian, localhost.localdomain, , localhost
relayhost = 
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +

ここから必要なところだけを変更する。

設定(tips)

SMTP名やバージョン番号の非表示

時にはバージョンが見えない時がいい事もある。

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

ここをいじる。Debian のデフォルトだと、

Connected to mail.deer-n-horse.jp.
Escape character is '^]'.
220 mail.deer-n-horse.jp ESMTP Postfix (Debian/GNU)

と、telnetなどでアクセスすると表示される。別にSMTPに何を使ってようが勝手なわけで、「Postfix」って文字を表示させないことも可能。

smtpd_banner = $myhostname ESMTP

と、すれば、「Postfix」も「(Debian/GNU)」も表示されない。

サイズ制限

受信拒否

とりあえず、ここでは main.cf にて smtp_client_restrictions を利用する。

fmlとか使いたい

fmlなどのインストールは別として、postfixがコマンドを使うためにはそのコマンドを指定しておく必要があります。

allow_mail_to_commands = alias,forward,include

fmlでは include を使います。

他に .forward を使ってメールを転送するユーザがいる場合は forward の指定が必要。

POP before SMTP

dracdを常時起動させ、POPしてきたIPアドレスと時間をデータベースに記憶させる。次にSMTPしてきたクライアントのIPアドレスなどを照合し、有効ならSMTPを許可する仕組み。とりあえず必要なパッケージは、dracとqpoppper-drac。

apt-get install qpopper-drac drac

でインストールを行なう。
次に、/etc/postfix/main.cf に以下の記述の追加。

smtpd_recipient_restrictions =
        permit_mynetworks
        check_client_access btree:/var/lib/drac/dracd
        check_relay_domains

設定後はPostfixを再起動して、不正リレーが出来ないことを確認する事。

APOP at QPOPPER

このページはPostfixなので、別に用意したいが、上に POP Before SMTP書いてるし、ここで扱ってしまおう。

  1. QPOPPER の APOP DBを初期化する。
    /usr/sbin/popauth -init
    
  2. ユーザごとにAPOPアカウントを追加する。
    /usr/sbin/popauth -user ryosuke
    

header_checks で微妙な操作

header_checksで正規表現ルールを記述したファイルを指定することでメール受信拒否などができる。

正規表現ルールの記述フォーマットは以下のようになる。

[正規表現ルール]  [アクション]

アクションには「REJECT」や「IGNORE」などが指定できる。正規表現を記述する際大文字小文字の区別はPerlのそれとは異なり以下のように行う。

/^Subject:.*SPAM/i   REJECT        大文字小文字を区別する
/^Subject:.*SPAM/    REJECT        大文字小文字を区別しない

header_checksの詳細は header_checks(5) で確認できる。

参考文献



[UNIX/Linuxエンジニアへの道] [DEER N' HORSEトップページ]

Copyright DEER N' HORSE 1993-2006 All right reserved.
ryosuke@cool.email.ne.jp
$Id: postfix.html,v 1.2 2006-03-01 03:02:12 ryosuke Exp $