いままでは、ずっとqmailを使ってきた。
qmail自体の信頼性はいまでも高いとは思うのだが、最終バージョンリリース後に現れた規格等に対応するために、現実に運用するには、数多くのパッチを当てる必要ががあり、非常に手間がかかる。
そして、Postfixは現在も開発が継続しており、安全性もqmailに劣らないと思われる。
そこで、今回からはPostfixを使用することにした。
# もっとも、qmailやtcpserverの理念自体は、非常によいものであるとは思うのだが...
CentOSのRPMはPostfixはPostgreSQLを使うようにコンパイルされているので、自分でコンパイルしなくてはならない。
実際にはバーチャルドメインを使うわけでなし、データベースはいらないはずなのだが、依存関係が存在するので、RPMでインストールしようとするとPostgressまでインストールしなくてはならない。
もっともSRPMのspecファイル内の1文字を置換するだけなので、不要なPostgreSQLは入れずに、SRPMからいれてみる。
まず、SRPMをとってくる。
wget http://ftp.riken.jp/Linux/centos/5/os/SRPMS/postfix-2.3.3-2.src.rpm
そして、ソースを展開。
# rpm -ivh postfix-2.3.3-2.src.rpm
specファイルの編集。
# vi /usr/src/redhat/SPECS/postfix.spec
%define MYSQL 1 <-MySQLを使うように指定
そして、RPMを作成しようとするが、以下のライブラリが必要だと言われるので,yumでインストール。
db4-devel
zlib-devel
openldap-devel >= 2.0.27
cyrus-sasl-devel >= 2.1.10
pcre-devel
mysql-devel
openssl-devel >= 0.9.6
# rpmbuild -ba postfix.spec
# rpm -ivh /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.i386.rpm
無事インストールは完了。
そして設定ファイル/etc/postfix/main.cfを編集する。
変更内容は以下のとおり。
$ diff /etc/postfix/main.cf /etc/postfix/main.cf.org
71d70
< myhostname = tower.rally.or.jp <-ホスト名
79d77
< mydomain = rally.or.jp <-ドメイン名
95c93
< myorigin = $mydomain <-送信元ドメイン名(送信メールアドレスの@以降をドメイン名に)
---
> #myorigin = $mydomain
109c107
< inet_interfaces = all <- メールを受け取るネットワークインターフェイスのアドレス範囲
---
> #inet_interfaces = all
112c110
< #inet_interfaces = localhost
---
> inet_interfaces = localhost
157c155
< mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain <- 受け取るドメイン
---
> mydestination = $myhostname, localhost.$mydomain, localhost
261d257
< mynetworks = 192.168.1.0/24, 127.0.0.0/8 <- ローカルネットワークのアドレス範囲
291c287
< relay_domains = $mydestination <- リレーを許可するドメイン
---
> #relay_domains = $mydestination
414c410
< home_mailbox = Maildir/ <- メールボックスの形式指定
---
> #home_mailbox = Maildir/
672,677d667
< mailbox_size_limit = 10240000000 <- メールボックスのサイズ指定
< message_size_limit = 40960000 <- 一通のメールのサイズ指定
< smtpd_sasl_auth_enable = yes <- SASLによるSMTP認証の使用
< smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination <- リレーを許可するものを設定
< smtpd_sasl_local_domain = $mydomain <- ローカル認証
とりあえずroot用のMaildirを作成する。
# mkdir Maildir
# chmod 700 Maildir
# chown root:root Maildir
sendmailを停止し、PostfixとSASL認証を起動する。
# service sendmail stop
# service postfix start
# service saslauthd start
動作を確認後、自動起動と、sendmailの入れ替えを行う。
# chkconfig sendmail off
# chkconfig postfix on
# chkconfig saslauthd on
# alternatives --config mta
alternativeにより、/usr/sbin/sendmailが/usr/sbin/sendmail.postfixにリンクされる。
iptablesで外部からのポート25での接続を許可する。
# vi /etc/sysconfig/iptables
...
-A RH-Firewall-1-INPUT -p 25 -j ACCEPT
...
# service iptables restart
/etc/aliasesを修正して、root、webmaster、postmasterなど宛のメールはnorに行くようにする。修正後newaliasesで更新するのを忘れないこと。