○ Postfix (SSL対応) のインストール

*Maildir形式のsmtpサーバの構築をします
*postfix-2.7.1をソースからインストールし、設定します
*tls接続、DOVCOT_SASLを利用したsmtp-authに対応しています
*既存のsendmailを停止し、postfixのsendmailに置き換えます
*浅見秀雄さんのS25Rスパム対策と佐藤潔さんのStarpitを使っています
*make はメンテナンスマシンで行っています

**以降はコメントです
*ソースの取得、削除は略します
*エディタ、ファイラーの操作は省略します
*ソースを展開したら説明文 (英文) を読みましょう
*Enterキーを省略します

*ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
*設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:postfix-2.7.1.tar.gz  (http://www.postfix.org/)
:white.list.txt (http://gabacho.reto.jp/anti-spam/)
:postfix-sleep.patch (http://k2net.hakuba.jp/)
:tarpit_client (http://k2net.hakuba.jp/)

○参照ファイル

パッケージの追加
最初の設定 (Xen)
opensslのインストール

○インストール環境

:OS CentOS 5.5
:selinux disabled or permissive
:インストール先 
:作業 /usr/src
:言語 LANG=en_US.UTF-8
:ユーザー rootで実行

*メンテナンスの場合は一般ユーザから行います



○postfix-2.7.1

○専用ユーザ・グループの作成

uid/gid情報を参照

# useradd -u 89 -d /dev/null -s /bin/false postfix
# groupadd -g 90 postdrop

○sendmailの停止

# service sendmail stop
# chkconfig --del sendmail
# mv /usr/sbin/sendmail /usr/sbin/sendmail-OLD
# mv /usr/bin/mailq /usr/bin/mailq-OLD
# mv /usr/bin/newaliases /usr/bin/newaliases-OLD

*setuid権限を削除 (2755→0755)

# chmod 755 /usr/sbin/sendmail.sendmail

○ソースの展開・インストール

*htmlドキュメントを適当なディレクトリに保存して利用しましょう
*postfix-sleep.patchを当てます
*sleep中に相手が接続を切ったら、smtpdプロセスをすぐに終了するパッチです
*dovecot_saslを使う設定です

# cd /usr/src
# tar zxvf postfix-2.7.1.tar.gz
# chown -R root:root postfix-2.7.1
# cd postfix-2.7.1

*パッチを当てます
*パッチは1つ上のディレクトリに置きます

# patch -p1 < ../postfix-sleep.patch
# make tidy

*コンフィグシェルスクリプトを実効します
*同じディレクトリで実行します
pfixcfg.sh (詳細別記)

# source pfixcfg.sh
# make
# make install
・・・・・・・・・・・・・・・・・・・
install_root: [/]
tempdir: [/usr/src/postfix-2.7.1]
config_directory: [/etc/postfix]
command_directory: [/usr/sbin]
daemon_directory: [/usr/libexec/postfix]
data_directory: [/var/lib/postfix]
html_directory: [no]
mail_owner: [postfix]
mailq_path: [/usr/bin/mailq]
manpage_directory: [/usr/local/man]
newaliases_path: [/usr/bin/newaliases]
queue_directory: [/var/spool/postfix]
readme_directory: [no]
sendmail_path: [/usr/sbin/sendmail]
setgid_group: [postdrop]
・・・・・・・・・・・・・・・・・・・
# cd ..
# tar jcvf postfix-2.7.1-100611.tar.bz2 postfix-2.7.1/

○aliasesファイルを編集します (変更追加分)

:/etc/aliases (root root 644)

*設定例です
*sendmail用のaliasesを使用しています
*/dev/nullを指定すると配送されません
*root宛のメールは専用ユーザに配送します 専用ユーザ (luna)
*9文字以上のユーザー名にしたい場合、aliasesとcanonicalで設定します

root:           luna
starlight:      star
moonlight:      moon
webmaster:      /dev/null

:aliases.dbを作ります

# rm aliases.db
# newaliases

○canonicalファイルを編集します

:/etc/postfix/canonical (root root 644)

*設定例です

star    starlight
moon    moonlight

:canonical.dbを作ります

# postmap /etc/postfix/canonical

○S25R+Starpit用のファイル

:/etc/postfix/white.list.txt (root root 644)
:/etc/postfix/tarpit_client (root root 644)

*関連サイトにアクセスし、十分理解した上で使用します

○accessファイルを編集します

:/etc/postfix/access (root root 644)

*設定例です
*良く不正リレーメールが来るので必要なければ拒否します
*smtpd_sender_restrictionsで使用しています
*書式は各自学習してください

jss.cn          REJECT
jxs.cn          REJECT
sds.cn          REJECT
bjs.cn          REJECT
hns.cn          REJECT
tjs.cn          REJECT
yns.cn          REJECT

:access.dbを作ります

# postmap /etc/postfix/access

○JUNKMAILを拒否・添付ファイルをチェックします

:/etc/postfix/header_checks (root root 644)

*設定例です
*マニュアルは"$ man 5 header_checks"
*正規表現またはPCREが使える?
*まともな方法で送られてくるスパムメールを、headerをチェックして拒否します
*nameのチェックはheader_checksで行ないます
*書式は各自学習してください

/^X-Mailer:.*PostMaster General/    REJECT
/^Return-Path:.*<#.*@.*>/       REJECT
/^From:.*<#.*@.*>/              REJECT
/^subject: more money$/         REJECT
/^subject:.*I LOVE YOU/         REJECT
/^to: our valued customer$/     REJECT
/^from: your friend$/           REJECT

/^content-type:.*name.*\.scr.*/ REJECT
/^content-type:.*name.*\.exe.*/ REJECT
/^content-type:.*name.*\.inf.*/ REJECT
/^content-type:.*name.*\.pif.*/ REJECT
/^content-type:.*name.*\.bat.*/ REJECT
/^content-type:.*name.*\.dll.*/ REJECT
/^content-type:.*name.*\.vbs.*/ REJECT
/^content-type:.*name.*\.reg.*/ REJECT

/^Content-Type: text\/html/     REJECT HTML not allowed.

/GyRCTCQ+NUJ6OS05cCIoGyhC/      REJECT
/wkPjVCejktOXAiK/               REJECT
/MJD4lQno5LTlwIi/               REJECT

*BASE64エンコード後の日本語文字を知る

$ echo -n "未承諾広告※" | nkf -MB
GyRCTCQ+NUJ6OS05cCIoGyhC

○/etc/postfix/body_checks (root root 644)

*省略

○main.cfを編集します

/étc/postfix/main.cf (詳細別記)

*証明書の作成は 認証局と証明書の発行 を参照してください

○master.cfを変更します (変更分)

*下記の行のコメント (#記号) を外します、5段になっているので注意
*OEがTLSラッパーモードでアクセスするのでsmtps (port465) を開放します
*Thunderbirdはport25でTLS接続をします

smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

○postfixパラメータの確認

*デフォルトのパラメータを表示

# postconf -d

*修正したパラメータの表示

# postconf -n

○iptablesの設定

*Netfilter (iptables) で制御している場合、ポートを開けてください

Netfilter (iptables) の設定参照

○postfix起動スクリプトを作ります

/étc/rc.d/init.d/postfix (詳細別記)

○selinuxヘの対応 (selinuxが有効の場合)

:新規インストールファイルのselinuxラベルを修正

# restorecon -Rv /etc
# restorecon -Rv /usr
# restorecon -Rv /var

○自動起動スクリプトをonにし、postfixを起動します

# chkconfig --add postfix
# service postfix start

○smtp のレスポンスコード

response-code



○ローカルオンリー (参考)

:/etc/postfix/main.cf (変更部分)

*マシンのIPアドレスを指定します

mynetworks = 192.168.0.21/32, 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/spool/mail

○ Copyright(c) 528p.com All Rights Reserved.