Postfix
- 概要
- インストール・設定
- バージョンアップ
- その他
概要
ドキュメントについて
長らくqmailとqmail-vidaの構成でメールサーバを運用していたが、サーバのリプレイスに併せてPostfixへ移行した。導入に際してのメモ。
目的
メールサーバを利用するユーザに対し、次の機能を提供する。
- smtpd
- popd
- SMTP Auth対応
- SSL対応
- バーチャルユーザ
- バーチャルドメイン
環境
サーバ
- FreeBSD 6.1-RELEASE + jail環境
- IPアドレス(jail):192.168.1.12
- ホスト名:mail.example.com
- MXレコード:MX 10 mail.example.com.
uname -a FreeBSD mail.example.com 6.1-RELEASE-pN FreeBSD 6.1-RELEASE-pN #0: Sat Jun 17 13:41:35 JST 2006 root@test.example.com:/usr/obj/usr/src/sys/TEST i386
Postfix
- postfix-2.2.10(導入直後)→postfix-2.3.3(バージョンアップ後)
メールアドレス
実ユーザとバーチャルユーザは分けることにした(後述)。
- 実ユーザ:hoge@mail.example.com
- バーチャルユーザ:hoge@example.com
導入及び運営方針
当初PostixとCourier-IMAPで構築し、Courier-IMAPのuserdbを利用してユーザ管理及び認証を行っていた。しかし、ユーザの管理(登録、パスワード変更、一覧)向上のため、PostfixAdminとMySQLを加えた構成に変更した。データベース動作によるコストやセキュリティなどを考慮した上で、各自最適な構成にすべきである。また、PostfixAdmin導入による制約が発生することにも注意(後述)。
インストール・設定
Postfix
インストール
sendmailを確認して、キューがなければ停止
# mailq
/var/spool/mqueue is empty
Total requests: 0
# /etc/rc.d/sendmail stop
portsからインストール
オプションとして、SASL2,TLS,BDB,MySQLを選択
# portinstall mail/postfix
インストールの途中の質問
ユーザアカウントにposftixを追加するか? Would you like me to add it [y]? y Postfixをアクティブにするか(mailer.confをPostfixのものに置き換えるか)? Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y
インストールの最後の指示に従い、Sendmailを無効にSendmail関連の定期実行ジョブを無効に設定する
/etc/rc.conf: ... # 以下を追加 sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO"
/etc/periodic.conf: ... # 以下を追加 daily_clean_hoststat_enable="NO" daily_status_mail_rejects_enable="NO" daily_status_include_submit_mailq="NO" daily_submit_queuerun="NO"
Posftixを有効にする
/etc/rc.conf: postfix_enable="YES"
設定
設定パラメータを確認しながら、変更が必要な箇所のみ修正
/usr/local/etc/postfix/main.cf: ... myhostname = mail.example.com ... mydomain = example.com ... mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ... mynetworks_style = subnet ... recipient_delimiter = + ... home_mailbox = Maildir/ ...
rootなどのメールを転送する場合は以下を追加
/etc/mail/alias: ... root: HOGEHOGE
エイリアスDBの作成
# newaliases
起動
# posftix start
正常に起動できているかログを確認
# tail /var/log/maillog Oct 9 23:55:44 mail postfix/postfix-script: starting the Postfix mail system Oct 9 23:55:44 mail postfix/master[99191]: daemon started -- version 2.3.3, configuration /usr/local/etc/postfix
ローカルユーザ宛にメールが送信できるか確認
$ sendmail user@mail.example.com test . # tail /var/log/maillog Jun 21 22:44:47 mail postfix/pickup[61113]: 36F5E35FF5C: uid=0 from=<user> Jun 21 22:44:47 mail postfix/cleanup[61117]: 36F5E35FF5C: message-id=<20060621134447.36F5E35FF5C@mail.example.com> Jun 21 22:44:47 mail postfix/qmgr[61114]: 36F5E35FF5C: from=<user@mail.example.com>, size=299, nrcpt=1 (queue active) Jun 21 22:44:47 mail postfix/local[61119]: 36F5E35FF5C: to=<user@mail.example.com>, relay=local, delay=0, status=sent (delivered to maildir) Jun 21 22:44:47 mail postfix/qmgr[61114]: 36F5E35FF5C: removed $ ls ~/Maildir/new/ 1160406012.V4aI376c38M107638.mail.example.com
SASL(SMTP-AUTH)の設定
SMTP-AUTH用のライブラリとしてCyrus-SASL2を利用する。Postfixインストール時にオプションでSASL2を選択していれば、一緒にインストールされている筈。
今回の認証プロセスは次のような感じか? SMTP(Postfix)→SASLライブラリ(Cyrus-SASL2)→認証デーモン(authdaemond)→pamやMySQL
認証方法の設定ファイルを作成する
/usr/local/lib/sasl2/smtpd.conf: pwcheck_method: authdaemond log_level: 3 mech_list: PLAIN LOGIN authdaemond_path: /var/run/authdaemond/socket
PostfixでSASLを有効に設定する
/usr/local/etc/postfix/main.cf:
...
# 以下を追加
# SASL認証を有効にする
smtpd_sasl_auth_enable = yes
# リレーするメールの設定
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
※authdaemond(Courier-IMAP)をインストールしないと動作しないので、その他の設定を飛ばして、Courier-IMAPのインストールを行うか、SASL認証をまだ有効に設定しない必要有り
TLSの設定(サーバ)
TLSを利用することでSMTP通信を暗号化する。クライアントの証明書の検証は行わない。今回は安価なRapidSSLの証明書を利用(20USDちょっと)。参考ページ
秘密鍵とCSRを作成する。作り方はVersignのサイトあたりを参考に。
# mkdir /usr/local/etc/ssl/ # cd /usr/local/etc/ssl/ # openssl md5 * > rand.dat # openssl genrsa -rand rand.dat -des3 1024 > key.pem Enter pass phrase: HOGEHOGE Verifying - Enter pass phrase: HOGEHOGE # openssl req -new -key key.pem -out csr.pem Enter pass phrase for key.pem: HOGEHOGE Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Kanagawa Locality Name (eg, city) []:Yokohama Organization Name (eg, company) [Internet Widgits Pty Ltd]:Hoge Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:mail.example.com Email Address []: A challenge password []: An optional company name []:
CSRをCA局へ提出。発行してもらったCRT(サーバ証明書)を保存する
# /usr/local/etc/ssl/server.crtとして保存
秘密鍵にパスワードをつけるなとあるので秘密鍵からパスフレーズを取り除いたファイルを作成する
# openssl rsa -in key.pem -out key_nopass.pem
作成したファイルを他のユーザから見られないように
# chmod 600 /usr/local/etc/ssl/*
PosftixでTLSを有効に設定する
/usr/local/etc/postfix/main.cf: ... # 以下を追加 # TLSを有効にする smtpd_use_tls = yes # サーバ証明書を指定 smtpd_tls_cert_file = /usr/local/etc/ssl/server.crt # 秘密鍵を指定 smtpd_tls_key_file = /usr/local/etc/ssl/key_nopass.pem # 認証をTLSに限定する(設定注意) smtpd_tls_auth_only = yes # TLSセッションキャッシュ(利用を強く推奨) smtpd_tls_session_cache_database = btree:/usr/local/etc/postfix/smtpd_scache # ReceivedヘッダにTLS関係の情報を記録する smtpd_tls_received_header = yes # ログ設定(テスト時に1か2に設定) #smtpd_tls_loglevel = 1
※今回はクライアントの証明書の検証を行わないので、smtpd_tls_CAfileやsmtpd_tls_CApathの指定の不要は不要かと思われる。また、PostfixAdminを利用した場合、Clear-text認証になってしまうので(後述)、smtpd_tls_auth_onlyを有効に設定している。TLSに対応していないMUAは利用出来なくなってしまうので注意!
Postfixをリロード
# postfix reload
TLSを利用して正しくメールが送信できるか確認
smtpd_tls_loglevelを1か2に設定 ↓ TLSに対応したMUAでテストメールを送信 ↓ ログを確認(以下が含まれていればOK) # tail /var/log/maillog ... Oct 10 00:17:27 mail postfix/smtpd[99417]: connect from user.example.com[192.168.0.100] Oct 10 00:17:27 mail postfix/smtpd[99417]: setting up TLS connection from user.example.com[192.168.0.100] Oct 10 00:17:27 mail postfix/smtpd[99417]: TLS connection established from user.example.com[192.168.0.100]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits) ...
TLSの設定(クライアント)
ユーザからの接続だけではなく、TLSに対応したサーバ(さくらのメールボックスなど)への配送の際も暗号化する(Postfixがクライアント)。
PosftixでTLSを有効に設定する
/usr/local/etc/postfix/main.cf: ... # 以下を追加 # TLSを有効にする smtp_use_tls = yes # クライアント証明書(サーバと共通でOK) smtp_tls_cert_file = /usr/local/etc/ssl/server.crt # 秘密鍵(サーバと共通でOK) smtp_tls_key_file = /usr/local/etc/ssl/key_nopass.pem # CA証明書 smtp_tls_CAfile = /usr/local/etc/ssl/Equifax_Secure_eBusiness_CA-1.cer # TLSセッションキャッシュ smtp_tls_session_cache_database = btree:/usr/local/etc/postfix/smtp_scache # ログレベル(動作確認時) #smtp_tls_loglevel = 1
Postfixをリロード
# postfix reload
TLSを利用して正しくメールが配信が出来るか確認
ログレベルを1か2に設定して、TLSに対応したメールサーバにメールを投げてログを確認
サブミッションポートの設定
多くのプロバイダにおいてOutbound Port 25 Blockingが導入されているので、サブミッションポートでもListenするように設定する。
/usr/local/etc/postfix/master.cf #以下のコメントを外す submission inet n - n - - smtpd -o smtpd_etrn_restrictions=reject -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
Postfixをリロード
# postfix reload
サブミッションポートを利用して正しくメールが送信できる確認
Becky!のポート番号を変更。正常にメールが送信できることを確認
MySQL
インストール
Makefileを確認してオプションを設定しておく
/usr/local/etc/pkgtool.conf: 'mysql5*' => 'WITH_CHARSET=ujis WITH_XCHARSET=all WITH_COLLATION=ujis_japanese_ci',
portsからインストール
# portinstall databases/mysql50-server ===> Installing ldconfig configuration file ===> Compressing manual pages for mysql-client-5.0.22 ===> Registering installation for mysql-client-5.0.22 ===> Returning to build of mysql-server-5.0.22 Error: shared library "mysqlclient.15" does not exist *** Error code 1
何故かインストールできない。clientを自分でmake installしても、serverでこける。portsではなく、ソースからインストールするのは問題ない。テスト用のjailを用意して何回も試したときに、一度だけportsからのインストールに成功したが、成功したのは後にも先にもそれっきり。
仕方がないので、パッケージからインストール。先の残骸が残っているのなら先に削除
# pkg_add -r mysql50-server mysql50-client
インストールが終わったら、portupgradeでソースから最新バージョンに更新してみる
# portupgrade mysql-server mysql-client
問題なくバージョンアップ完了。結局何が悪いのか分からないが、気にせず進めることにする
MySQLを有効にするため、rc.confに追加
/etc/rc.conf: mysql_enable="YES"
設定ファイルをコピーせよとあったので、自分にあった環境の設定ファイルをコピー
# cp /usr/local/share/mysql/my-small.cnf /var/db/mysql/my.cnf
設定
MySQLのroot用のパスワードを設定
# mysqladmin -u root password "PASSWORD"
MysSQLのユーザを確認
# mysql -uroot -p mysql mysql> select user, host from user; +--------------+------------------+ | user | host | +--------------+------------------+ | | localhost | | root | localhost | | | mail.example.com | | root | mail.example.com | +--------------+------------------+ 6 rows in set (0.00 sec)
デフォルトのユーザを削除
mysql> delete from user where user=''; mysql> flush privileges; mysql> exit;
設定の確認は以下のコマンドで行える
# mysqladmin -uroot -p variable
Courier-IMAP
インストール
portsからインストール
オプションとして、OPENSSL、WITH_AUTH_USERDB、AUTH_MYSQLを選択
# portinstall mail/courier-imap
POP3設定
POP3はSSLの接続のみ提供する。
秘密鍵とサーバ証明書を組み合わせたファイルを作る
# cat key_nopass.pem server.crt > key+server.pem
/usr/local/etc/courier-imap/pop3d-ssl: POP3_STARTTLS=YES TLS_CERTFILE=/usr/local/etc/ssl/key+server.pem
authdaemond設定
バーチャルユーザ用のユーザを追加
# adduser -D Username: vmailbox Full name: Uid (Leave empty for default): 5000 Login group [vmailbox]: postfix Login group is postfix. Invite vmailbox into other groups? []: Login class [default]: Shell (sh csh tcsh nologin) [sh]: nologin Home directory [/home/vmailbox]: /usr/local/virtual Use password-based authentication? [yes]: no Lock out the account after creation? [no]: Username : vmailbox Password : <disabled> Full Name : Uid : 5000 Class : Groups : postfix Home : /usr/local/virtual Shell : /usr/sbin/nologin Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (vmailbox) to the user database. Add another user? (yes/no): no Goodbye!
パーミッションを設定
# chmod -R 771 /usr/local/virtual
対応する認証の設定
# cp /usr/local/etc/authlib/authdaemonrc.dist /usr/local/etc/authlib/authdaemonrc
/usr/local/etc/authlib/authdaemonrc: authmodulelist="authmysql authpam"
MySQL用の設定ファイルのうち以下を編集(タブ区切り!)
# cp /usr/local/etc/authlib/authmysqlrc.dist /usr/local/etc/authlib/authmysqlrc
/usr/local/etc/authlib/authmysqlrc: MYSQL_SERVER localhost MYSQL_USERNAME postfix MYSQL_PASSWORD postfix MYSQL_DATABASE postfix MYSQL_USER_TABLE mailbox MYSQL_CRYPT_PWFIELD password MYSQL_UID_FIELD '5000' MYSQL_GID_FIELD '125' MYSQL_LOGIN_FIELD username MYSQL_HOME_FIELD '/usr/local/virtual' MYSQL_NAME_FIELD name MYSQL_MAILDIR_FIELD maildir MYSQL_QUOTA_FIELD quota MYSQL_WHERE_CLAUSE active='1'
有効にするためにrc.confに以下を追加
/etc/rc.conf: courier_imap_pop3d_ssl_enable="YES" courier_authdaemond_enable="YES"
Apache
インストール
jail環境においてPostfixAdmin、Webメール用途のみで利用する予定なので、特にオプションを設定せずにインストール
# portinstall www/apache22
/etc/rc.conf: apache22_enable="YES"
設定
Apacheの設定
/usr/local/etc/apache22/httpd.conf: # 不要なモジュールをコメントアウト # 以下の2行を編集 ServerAdmin webmaster@example.com ServerName mail.example.com:80 # 以下の2行のコメントを外す Include etc/apache22/extra/httpd-default.conf Include etc/apache22/extra/httpd-ssl.conf
出力するサーバ情報を最小にするために以下を編集(お好みにで)
/usr/local/etc/apache22/extra/httpd-default.conf: ServerTokens Prod ServerSignature Off
SSLの設定
/usr/local/etc/apache22/extra/httpd-ssl.conf: ServerName mail.exaple.com:443 ServerAdmin webmaster@example.com SSLCertificateFile /usr/local/etc/ssl/server.crt SSLCertificateKeyFile /usr/local/etc/ssl/key_nopass.pem
起動
# /usr/local/etc/rc.d/apache22.sh start
PHP
インストール
オプションとして、WITH_APACHE、WITH_MULTIBYTEを選択
# portinstall lang/php5
設定ファイルをコピー
# cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini
設定
magic_quotes_gpcをオンにする
/usr/local/etc/php.ini: magic_quotes_gpc = On
ApacheでPHPを有効に設定する。AddTypeしている辺りに追加
/usr/local/etc/apache22/httpd.conf AddType application/x-httpd-php .php
Apacheを再起動
# /usr/local/etc/rc.d/apache22.sh restart
Postfix Admin
インストール
portsからインストール。オプションはMYSQLを選択
# portinstall mail/postfixadmin
Apacheの設定
Apache用のファイルを編集する。デフォルトの設定よりもきつめの設定に
Postfix Admin用の設定ファイルを作成
/usr/local/etc/apache22/Includes/postfixadmin.conf: Alias /postfixadmin/ "/usr/local/www/postfixadmin/" <Directory "/usr/local/www/postfixadmin"> AllowOverride AuthConfig Limit Indexes Order Allow,Deny Allow from all </Directory>
Apacheのリスタート
# apachectl restart
/admin/.htpasswdを編集。デフォルトのadminを消して、別ユーザを登録
# htpasswd /usr/local/www/postfixadmin/admin/.htpasswd USER New password: Re-type new password: # htpasswd -D /usr/local/www/postfixadmin/admin/.htpasswd admin
/admin/.htaccessを編集。特定のIPアドレスからのみ接続を許可する
/usr/local/www/postfixadmin/admin/.htaccess: AuthUserFile /usr/local/www/postfixadmin/admin/.htpasswd AuthGroupFile /dev/null AuthName "Postfix Admin" AuthType Basic deny from all allow from NNN.NNN.NNN.NNN/29 require valid-user
Postfix Adminをバージョンアップした際に、これらのファイルは上書きされてしまうので注意。
MySQLの設定
MySQLにPostfix用のデータベースを登録する
/usr/local/www/postfixadmin/DATABASE_MYSQL.TXTにリダイレクション用のファイルがあるので、mysqlに入力してやる。ただし、jail環境によっては、localhostの記述でこけることがあるので、適当に編集してやる
# mysql -uroot -p < /usr/local/www/postfixadmin/DATABASE_MYSQL.TXT
設定したユーザを確認
# mysql -uroot -p mysql mysql> select user, host from user; +--------------+------------------+ | user | host | +--------------+------------------+ | postfix | localhost | | postfixadmin | localhost | | root | localhost | | root | mail.example.com | +--------------+------------------+ 6 rows in set (0.00 sec)
Postfix用のデータベースの確認
mysql> use postfix; mysql> show tables; +-------------------+ | Tables_in_postfix | +-------------------+ | admin | | alias | | domain | | domain_admins | | log | | mailbox | | vacation | +-------------------+ 7 rows in set (0.01 sec) mysql> exit;
Postfixの設定
MySQLへのクエリー用設定ファイルを/usr/local/etc/postfix/mysqlに作成する(設定が沢山増えると気持ち悪いのでディレクトリに放り込む)
/usr/local/etc/postfix/mysql/virtual_alias_maps.cf: user = postfix password = postfix hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = 1
/usr/local/etc/postfix/mysql/virtual_domains_maps.cf: user = postfix password = postfix hosts = localhost dbname = postfix query = SELECT domain FROM domain WHERE domain='%s'
/usr/local/etc/postfix/mysql/virtual_mailbox_maps.cf: user = postfix password = postfix hosts = localhost dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
/usr/local/etc/postfix/mysql/virtual_mailbox_limit_maps.cf: user = postfix password = postfix hosts = localhost dbname = postfix query = SELECT quota FROM mailbox WHERE username='%s'
# chmod 640 /usr/local/etc/postfix/mysql/virtual_* # chgrp postfix /usr/local/etc/postfix/mysql/virtual_*
PotfixがMySQLを見に行くようにmain.cfに以下を追加
/usr/local/etc/postfix/main.cf # for virtual settings virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql/virtual_domains_maps.cf virtual_mailbox_base = /usr/local/virtual virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql/virtual_alias_maps.cf virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql/virtual_mailbox_maps.cf virtual_minimum_uid = 5000 virtual_transport = virtual virtual_gid_maps = static:125 virtual_uid_maps = static:5000
設定をリロード
#postfix reload
設定
設定ファイルをコピー
# cp /usr/local/www/postfixadmin/config.inc.php.sample /usr/local/www/postfixadmin/config.inc.php
設定ファイルのうち以下を編集
/usr/local/www/postfixadmin/config.inc.php:
$CONF['database_type'] = 'mysqli';
$CONF['admin_email'] = 'postmaster@example.com';
$CONF['default_aliases'] = array (
'abuse' => 'abuse@example.com',
'hostmaster' => 'hostmaster@example.com',
'postmaster' => 'postmaster@example.com',
'webmaster' => 'webmaster@example.com'
);
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['footer_text'] = 'Return to Hogehoge';
$CONF['footer_link'] = 'http://www.example.net/';
確認
ブラウザからhttps://mail.example.com/postfixadmin/setup.phpを開き、全てOKならインストールは問題なし。
SPF対応(アウトバンド)
DNS設定
まずはドメインに対するSPFレコードを公開する。ポリシーとしては、サーバ用に割り当てられたサブネットのみからメールを送信するとする。実際のSPFレコードは手で作るか、openspf.orgのSPF WIZARDやMicrosoftのSender ID Framework SPF Record Wizard 等を利用して作成する
bindの正引き設定ファイルに以下のTXTレコードを追加
/xxx/example.com.zone:
...
IN TXT "v=spf1 ip4:nnn.nnn.nnn.nnn/NN ~all"
...
bindをリロード
# rndc reload
確認
TXTレコードが返ってくるかdigをしてみる
$ dig example.com txt ... ;; ANSWER SECTION: example.com. 3484 IN TXT "v=spf1 ip4:nnn.nnn.nnn.nnn/NN ~all" ...
問題なければ、SPFに対応したメールサーバ宛にメールを送信してみる。check-auth@verifier.port25.comに送信すれば、テストを行い結果を返信してくれる。
SPF対応(インバウンド)
メールサーバ宛に配信されてくるメールのSPFをチェックする。
インストール
Perlで書かれたスクリプトをCに移植したものがportsに登録されているのでインストール
# portinstall mail/postfix-policyd-spf
設定
インストールの最後にこうしろと指示されるので、指示に従い設定ファイルを編集する
master.cfに以下を追加
/usr/local/etc/postfix/master.cf: policy unix - n n - - spawn user=nobody argv=/usr/local/sbin/postfix-policyd-spf
main.cfのsmtpd_recipient_restrictionsに以下を追加
/usr/local/etc/postfix/main.cf:
smtpd_recipient_restrictions =
permit_mynetworks # 既存項目
permit_sasl_authenticated # 既存項目
reject_unauth_destination # 既存項目
reject_unknown_sender_domain
reject_unauth_destination
check_policy_service unix:private/policy
Postfixのリロード
# postfix reload
確認
libspf2にspfqueryというプログラムが含まれるのでテストしてみる。詳しいドキュメントはアーカイブのtestディレクトリにある
$ spfquery -ip=192.0.2.1 -sender=02.spf1-test.mailzone.com -helo=02.spf1-test.mailzone.com fail Please see http://spf.pobox.com/why.html?sender=postmaster%4002.spf1-test.mailzone.com&ip=192.0.2.1&receiver=spfquery spfquery: domain of 02.spf1-test.mailzone.com does not designate 192.0.2.1 as permitted sender Received-SPF: fail (spfquery: domain of 02.spf1-test.mailzone.com does not designate 192.0.2.1 as permitted sender) client-ip=192.0.2.1; envelope-from=postmaster@02.spf1-test.mailzone.com; helo=02.spf1-test.mailzone.com;
ログを見ると動作はしているようである。てっきり、メールヘッダ等に情報が出力されると思っていたのだが
# cat /var/log/maillog | grep spf Sep 28 23:33:54 mail postfix/smtpd[27338]: NOQUEUE: reject: RCPT from p7102-ipad603marunouchi.tokyo.ocn.ne.jp[124.85.128.102]: 554 5.7.1 <user@example.com>: Recipient address rejected: Please see http://spf.pobox.com/why.html?sender=kaera2006%40Safe-mail.net&ip=124.85.128.102&receiver=mail.example.com; from=<kaera2006@Safe-mail.net> to=<user@example.com> proto=SMTP helo=<gogoallfree5348797169867163917617.com>
バージョンアップ
もろもろ 様々なPortsが入り乱れて動作しているので、バージョンアップには注意が必要(ClamAVとか入っているとさらに面倒くさい)。コンフィグのフォーマットが変わっていて、daemonの起動に失敗したりすると全体に波及して認証に失敗するとか、配信に失敗する事があるので一つのPorts毎に確認しながらバージョンアップを行う(他にも言えることだが)。
postfix
コンフィグ用のコマンドがある。
# postfix upgrade-configuration # poftfix reload
Postfix Admin
admin/.htaccessと.htpasswdが上書きされてしまうので注意
その他
問題点
Maildir使用時の容量制限
Maildir使用時はメールボックス全体での容量制限が行えない。maildropとかPostfix VDAを使うと良い?
実ユーザ・バーチャルユーザの混合環境とPostfix Admin
Jun 21 22:44:47 mail postfix/trivial-rewrite[61118]: warning: do not list domain example.com in BOTH mydestination and virtual_mailbox_domains
authdaemond環境下でのCRAM-MD5
CRAM-MD5を利用する場合、専用のパスワードDBを用意する必要があるが、authdaemondを利用する場合はどのように処理をすればいいのか不明。現状ではcler-textのパスワードしか利用できないので、SMTP及びPOPともにSSLの使用を強制する必要がある。 MYSQL_CRYPT_PWFIELDとPostfixadminの$CONF['encrypt']をHMAC対応にすると、どうにかなりそうな気もするが未確認。参考、参考、参考
スパム対策
S25Rが流行っている?らしい。暇なときにでも試してみようか
- スパム対策技術
- http://www.gabacho-net.jp/anti-spam/
- Rgrey - S25R + greylisting
- http://k2net.hakuba.jp/rgrey/
- [pc][spam]Starpitでほぼ誤検出無く98%のスパムを排除
- http://d.hatena.ne.jp/stealthinu/20060706/p5
参考URL
まずはマニュアルやmanを参照するのが基本。
Postfix
- The Postfix Home Page
- http://www.postfix.org/
- Postfix Documentation
- http://www.postfix.org/documentation.html
- Postfix Source Code(Release notesとChange log)
- http://www.postfix.org/postfix-release/index.html
- Postfixのぺーじ−和訳ドキュメント (2.2.x)
- http://www.kobitosan.net/postfix/trans-2.2/
- Postfix2.2設定パラメータ(日本語訳)
- http://www.kobitosan.net/postfix/trans-2.2/jhtml/postconf.5.html
- Postfix Frequently Asked Questions(日本語訳)
- http://www.kobitosan.net/postfix/jman/faq-jp.html
- Postfix チュートリアル
- http://tmtm.org/postfix/tutorial/
- Main Page - Postfix Wiki
- http://postfixwiki.org/index.php?title=Main_Page
- Virtual Users and Domains with Courier-IMAP and MySQL - Postfix Wiki
- http://postfixwiki.org/index.php?title=Virtual_Users_and_Domains_with_Courier-IMAP_and_MySQL
Courier-IMAP
- Courier-IMAP
- http://www.courier-mta.org/imap/
- Courier Authentication Library
- http://www.courier-mta.org/authlib/
- authlib
- http://www.courier-mta.org/?authlib.html
Cyrus-SASL2
- マニュアルはアーカイブの/docにある。なければ、検索で適当に
- http://www.indelible.org/php/sasl/cyrus-sasl2/
Postfix Admin
- Postfix Admin
- http://high5.net/postfixadmin/
- Postfix Adminの導入・設定メモ/FreeBSD 6.0版 [FreeBSD](fkimura.com)
- http://www.fkimura.com/postfixadmin1.html
MySQL
- MySQL 5.0 Reference Manual
- http://dev.mysql.com/doc/refman/5.0/en/
Apache
- Apache HTTP サーバ バージョン 2.2 ドキュメント
- http://httpd.apache.org/docs/2.2/
SPF
- SPF A Sender Policy Framework to Prevent Email Forgery
- http://www.openspf.org/
- Sender ID リソース:テクノロジに関するツールと情報
- http://www.microsoft.com/japan/mscorp/safety/technologies/senderid/resources.mspx
- Sender ID:送信者側の設定作業 − @IT
- http://www.atmarkit.co.jp/fsecurity/special/82senderid/sender101.html
- libspf2 - SPF Library
- http://www.libspf2.org/index.html
Keyword(s):
References: