#contents()
*** 初期設定 [#q7b6c769]
- &ref(main.cf); asof 20060905
- &ref(master.cf); asof 2006090
*** munakata@hmuna → munakata.hisao@hmuna.com アドレス自動変換 [#qcc2d5be]
- postfix 標準機能である canonical アドレスマップを利用する
-- /etc/postfix/canonical の編集
#
# 2006-9-6 muna : ( munakata@hmuna.com | stored_mail@hmuna.com ) -> munakata.hisao@renesas.com
#
munakata@hmuna.com munakata.hisao@renesas.com
stored_mail@hmuna.com munakata.hisao@renesas.com
-- canonical maps の有功化
[root@spirit ~]# postmap /etc/postfix/canonical
[root@spirit ~]# service postfix restart
Shutting down postfix: [ OK ]
Starting postfix: [ OK ]
[root@spirit ~]# postconf | grep canonical_maps
canonical_maps = hash:/etc/postfix/canonical
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains
$virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains
$canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps
$transport_maps $mynetworks
recipient_canonical_maps =
sender_canonical_maps =
- /var/log/maillog でアドレス変換が働いていることを確認 (外部には munakata@hmuna.com は流出しなくなった )
Sep 6 07:53:10 spirit postfix/smtp[11188]: 0B7B5F75553:
to=<munakata.hisao@renesas.com>, orig_to=<munakata@hmuna.com>,
relay=127.0.0.1[127.0.0.1], delay=3, status=sent (250 2.6.0 Ok, id=09093-10, from MTA([127.0.0.1]:10025): 250 Ok: queued as CE109F75559)
*** サイズの大きな(1Mバイト以上 程度)添付ファイルのついたメールを受信すると fetchmail の転送が止まる問題が発生 (重大欠陥) [#m9a9c89b]
- fetchmaillog でエラーの状況を見ると.... ⇒ &color(red){header情報が不正で 300秒のタイムアウト};をしたと言っている
1279 fetchmail: No mail for munakata at owa.hsdv.com
1279 fetchmail: 1 message for munakata at owa.hsdv.com.
1280 fetchmail: reading message munakata@ns02.hsdv.com:1 of 1 (816 header octets) fetchmail: incorrect header line found while scanning headers
1281 fetchmail: timeout after 300 seconds.
1282 fetchmail: socket error while fetching from owa.hsdv.com
1283 fetchmail: Query status=2 (SOCKET)
1284 fetchmail: 2 messages for munakata at owa.hsdv.com.
1285 fetchmail: reading message munakata@ns02.hsdv.com:1 of 2 (816 header octets) fetchmail: incorrect header line found while scanning headers
1286 fetchmail: timeout after 300 seconds.
1287 fetchmail: socket error while fetching from owa.hsdv.com
1288 fetchmail: Query status=2 (SOCKET)
1289 fetchmail: 3 messages for munakata at owa.hsdv.com.
1290 fetchmail: reading message munakata@ns02.hsdv.com:1 of 3 (816 header octets) fetchmail: incorrect header line found while scanning headers
1291 fetchmail: timeout after 300 seconds.
1292 fetchmail: socket error while fetching from owa.hsdv.com
1293 fetchmail: Query status=2 (SOCKET)
- fetchmail の問題(エラーの誤検出) に原因があると想定し &color(red){fetchmail を最新 (=6.3.4) に更新した};
-- [[現在の fetchmail 公式サイト:http://fetchmail.berlios.de/]] から &ref(fetchmail-6[1].3.4.tar.bz2,center,fatchmail -6.3.4); をダウンロードしてビルド、インストール
[root@spirit fetchmail-6.3.4]# ./configure --with-ssl
[root@spirit fetchmail-6.3.4]# make
[root@spirit fetchmail-6.3.4]# make install
*** fetchmail の設定 (ver2.0 2006-10) [#aa3ff7a1]
- fetxhmail ( 6.3.4 ) ) の設定は /root/.fetchmail に集約した ⇒ &ref(.fetchmailrc,center,/root/.fetchmailrc);
[root@spirit ~]# cat /root/.fetchmailrc
set postmaster server_admin
set no bouncemail
set logfile "/home/munakata/log/fetchmaillog"
defaults
protocol imap
port 993
fetchall
flush
no keep
limit 10000000
no limitflush
no mimedecode
smtphost localhost
ssl
# sslcertpath /usr/local/certs/
# sslproto ssl23
# sslfingerprint "EF:90:AA:A0:85:12:1F:B4:D1:E8:2A:1C:23:C2:F8:2E"
poll owa.hsdv.com
user munakata
password freedman
is munakata here ssl
##poll 172.26.0.227 user b1600471 password freedman is munakata here
- fetchmail 設定の確認
[root@spirit ~]# fetchmail -V
fetchmail: 警告: root アカウントでの実行はお薦めできません。
fetchmail リリース 6.3.4 +SSL+HESIOD+NLS.
Copyright (C) 2002, 2003 Eric S. Raymond
Copyright (C) 2004 Matthias Andree, Eric S. Raymond, Rob F. Funk, Graham Wilson
Copyright (C) 2005-2006 Matthias Andree, Sunil Shetye
Fetchmail はまったくの無保証です。これはフリーソフトウェアで、
いくつかの条件を満たせば再配布は大歓迎です。
詳しくは、COPYING ファイルを見てください。
Fallback MDA: (none)
Linux spirit.hmuna.com 2.6.9-42.0.2.EL #1 Tue Aug 22 23:56:05 CDT 2006 i686 i686 i386 GNU/Linux
コマンドライン及び/root/.fetchmailrcよりオプションを設定します。
ログファイルは /home/munakata/log/fetchmaillog です。
ID ファイルは /root/.fetchids です。
Fetchmail はログファイル中にも進行状況を示す . を書き込みます。
Fetchmail は誤った宛先の書かれたメッセージを server_admin に転送します。
Fetchmail は postmaster 宛にエラーメールを送信します。
アカウント munakata@owa.hsdv.com でのオプションです。
サーバの本名は owa.hsdv.com です。
IMAP プロトコルを利用します。 (993 サービスを利用します).
利用可能な全ての認証方式を試みます。
SSL による暗号化通信が行われます。
サーバの応答制限時間は 300 秒です。 (デフォルト)。
デフォルトのメールボックスが選択されました。
すべてのメッセージを取得します。 (--all on)
取得したメッセージはサーバに保持しません (--keep off)
古いメッセージは取得の前に消去されます。 (--flush on)
容量超過したメッセージは取得の前に消去されます。 (--limitflush on)
server-local アドレスへの書き換えを行います。 (--norewrite off)
改行記号の除去を行いません。 (stripcr off)
改行記号の追加を行いません。 (forcecr off)
Content-Transfer-Encoding の変換を行います。 (pass8bits off)
MIME のデコードを行いません。 (mimedecode off)
サーバアクセス後の待機を行いません。 (idle off)
記述のある Status 行を保持します。 (dropstatus off)
Delivered-To 行を破棄します。 (dropdelivered off)
メッセージの大きさの最大 10000000 バイトに制限されます。 (--limit 10000000)
取得できるメッセージのサイズは 100 に制限されます。(--fetchsizelimit 100)
3 回 (4 接続のうち) UID の二分木検索を行います。(--fastuidl 4)
受信したメッセージは SMTP によって次に示すサーバへ転送されます : localhost
`single-drop' モード: 1 個の localname が存在します。
このホストからの UID は記録されていません。
- fetchmail のデーモンモードでの起動
[root@spirit fetchmail-6.3.4]# fetchmail -d 300 -t 120
fetchmail: 警告: root アカウントでの実行はお薦めできません。
- デーモンモードでは データ取得間隔=2分、 一回の接続制限時間(タイムアウト)=5分とした
- この設定では、もし一回の接続で2分以上時間がかかっても5分までは正常に受信を続けることができる
- 以前 cron で毎回の受信を起動設定していた時には、前の fetchmail が起動中に次の起動が重なりエラーになっていたがこの問題の対策にもなっている
- 実行時のログ確認 (ssl 関係でエラーが出ているが動作は正常)
[root@spirit ~]# tail -f -n 40 /home/munakata/log/fetchmaillog
fetchmail: fetchmail 6.3.4 デーモンを動作開始します。
fetchmail: サーバ証明書検証エラー: unable to get local issuer certificate
fetchmail: サーバ証明書検証エラー: certificate not trusted
fetchmail: サーバ証明書検証エラー: unable to verify the first certificate
fetchmail: 2006年10月09日 00時19分21秒 に休眠状態となりました。
-- &color(red){sslの自己認証局が信頼できない.... と言っている};
-- &color(red){ここで問題を指摘された自己認証局が owa.hsdv.com か mail.hmuna.com かは判定出来ていない};
*** postfix のサイズ制限設定 [#o3ec1c3a]
- main.cf にメッセージサイズ制限、メールボックスサイズ制限を書く
# muna re-define size limit ( message 10M, mailbox per file=512M )
# 但し /Maildir を使っているので mailbox_size_limit の設定は意味がないが
mailbox_size_limit = 512000000
message_size_limit = 10240000
- 設定の確認
[root@spirit postfix]# postconf | grep size
berkeley_db_create_buffer_size = 16777216
berkeley_db_read_buffer_size = 131072
body_checks_size_limit = 51200
bounce_size_limit = 50000 ( 50k)
header_size_limit = 102400 (100k)
mailbox_size_limit = 512000000 (512M)
message_size_limit = 10240000 ( 10M)
- &color(red){⇒何れにしても 5M 程度の添付ファイルでバウンスはしないはずである!};
*** procmail レシピ [#d66ce8cf]
- &ref(procmailrc_munakata_20061110);
- &ref(procmailrc_public_20061110);
*** postfix のサイズ制限と fetchmail のサイズ超過メールの削除を指定して daemon として fetchmail を起動した [#y10e86fa]
- ログ ( fetchmail のサイズ制限が 1M の設定時 )
fetchmail: 4 通のメッセージが アカウント munakata , サーバ owa.hsdv.com 宛に届いています.
fetchmail: munakata@ns02.hsdv.com 宛に届いた 1 番目のメッセージ (2449133 バイト) を読み飛ばしています。 (容量超過) サーバからメッセージを削除しました。
fetchmail: munakata@ns02.hsdv.com 宛に届いた 2 番目のメッセージ(全部で 4 通)を読み込んでいます (986 バイト (ヘッダ) ) fetchmail: (4914 バイト (本体) )fetchmail: サーバからメッセ ージを削除しました。
fetchmail: munakata@ns02.hsdv.com 宛に届いた 3 番目のメッセージ (8900697 バイト) を読み飛ばしています。 (容量超過) サーバからメッセージを削除しました。
fetchmail: munakata@ns02.hsdv.com 宛に届いた 4 番目のメッセージ(全部で 4 通)を読み込んでいます (821 バイト (ヘッダ) ) fetchmail: (765 バイト (本体) )fetchmail: サーバからメッセージを削除しました。
fetchmail: 2006年10月07日 16時22分56秒 に休眠状態となりました。
- ログ ( fetchmail のサイズ制限が 10M の設定時 )
fetchmail: munakata@ns02.hsdv.com 宛に届いた 1 番目のメッセージ(全部で 1 通)を読み込んでいます (699 バイト (ヘッダ) ) fetchmail: (6260571 バイト (本体) )fetchmail: 500 秒間待機し ましたが制限時間を超過しました。
fetchmail: socketエラーが munakata@owa.hsdv.com よりメールを受信している最中に発生しました。
fetchmail: Query status=2 (SOCKET)
fetchmail: 2006年10月07日 16時49分50秒 に休眠状態となりました。
fetchmail: 2006年10月07日 16時51分50秒 に動作を再開しました。
fetchmail: サーバ証明書検証エラー: unable to get local issuer certificate
fetchmail: サーバ証明書検証エラー: certificate not trusted
fetchmail: サーバ証明書検証エラー: unable to verify the first certificate
fetchmail: 1 通のメッセージが アカウント munakata , サーバ owa.hsdv.com 宛に届いています.
fetchmail: munakata@ns02.hsdv.com 宛に届いた 1 番目のメッセージ(全部で 1 通)を読み込んでいます (699 バイト (ヘッダ) ) fetchmail: (6260571 バイト (本体) )fetchmail: サーバからメッセージを削除しました。
fetchmail: 2006年10月07日 16時52分03秒 に休眠状態となりました。
- &color(red){何れにしても大きな添付ファイルを受信しても fetchmail のメール転送が停止してしまう傷害は発生しなくなった};
-- 大きな添付ファイルのついたメールの後に通常のメールを送信した場合、正常に通常のメールが転送されていることを確認した
fetchmail: 2006年10月09日 11時56分49秒 に動作を再開しました。
fetchmail: サーバ証明書検証エラー: unable to get local issuer certificate
fetchmail: サーバ証明書検証エラー: certificate not trusted
fetchmail: サーバ証明書検証エラー: unable to verify the first certificate
fetchmail: 3 通のメッセージが アカウント munakata , サーバ owa.hsdv.com 宛に届いています.
fetchmail: munakata@ns02.hsdv.com 宛に届いた 1 番目のメッセージ (8900075 バイト) を読み飛ばしています。 (容量超過) サーバからメッセージを削除し ませんでした。
fetchmail: munakata@ns02.hsdv.com 宛に届いた 2 番目のメッセージ (8901431 バイト) を読み飛ばしています。 (容量超過) サーバからメッセージを削除しませんでした。
fetchmail: munakata@ns02.hsdv.com 宛に届いた 3 番目のメッセージ(全部で 3 通)を読み込んでいます (894 バイト (ヘッダ) ) fetchmail: (772 バイト (本体) )fetchmail: サーバからメッセージを削除しました。
fetchmail: 2006年10月09日 11時56分50秒 に休眠状態となりました。
- サイズ超過メールを受信して、メールを自動的に削除した場合は、オリジナルの宛先向けに警告メールが届いた ⇒ 誰からのメールかはわからないが....
件名:Fetchmail サイズ超過メッセージ
差出人:FETCHMAIL-DAEMON@spirit.hmuna.com
本 文:以下に示す容量を超過したメッセージはメールサーバ owa.hsdv.com アカウント munakata で削除されました :
1 番目のメッセージ(6261786 bytes の長さがあります)は削除されました。
- サイズ超過メールを受信して、メール転送を保留した場合は、オリジナルの宛先向けにサイズ超過メールが残っているとの警告メールが届く
件名:Fetchmail サイズ超過メッセージ
差出人:FETCHMAIL-DAEMON@spirit.hmuna.com
本 文:以下に示す容量を超過したメッセージがメールサーバ owa.hsdv.com アカウント munakata に残っています :
1 番目のメッセージ(8900075 バイト の長さがあります)は読み飛ばされました。
*** fetchmail の自動起動の設定 [#n3af8e64]
- 起動スクリプト( /etc/init.d/fetchmail )・・・ /home 下の各ユーザーの .fetchmail を自動起動する
[root@spirit ~]# cat /etc/init.d/fetchmail
# chkconfig: 345 99 20
#
# description: Fetchmail auto start script
# Source function library.
. /etc/rc.d/init.d/functions
# See how we were called.
case "$1" in
start)
for user in `ls /home/`
do
if [ -f /home/$user/.fetchmailrc ]; then
echo "fetchmail for $user starting..."
su $user -c "/usr/local/bin/fetchmail --daemon 120 --timeout 600"
fi
done
;;
stop)
# Stop daemons.
for user in `ls /home/`
do
if [ -f /home/$user/.fetchmailrc ]; then
echo "fetchmail for $user stoping..."
su $user -c "/usr/local/bin/fetchmail --quit"
fi
done
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
- 自動起動の設定
[root@spirit ~]# chkconfig --add fetchmail
[root@spirit ~]# chkconfig --list | grep fetch
fetchmail 0:off 1:off 2:off 3:on 4:on 5:on 6:off
*** [[/etc/postfix/postconf (コマンド実行結果)>Cent_Postconf]] [#pae8b6e0]
- &ref(postconf_20060905.txt);
*** postfix 2.3.6 の導入 (2006-1-5) [#s940412a]
- [[transport が見つからない問題>Postfix_Trobleshoot_1]] の対策の一環として &color(RED){2.0 系(=Cent OS 標準)⇒ 2.3.6にバージョンアップした};
- Postfix 2.2 系から TLS が標準サポートされるようになったことが 2.2系採用の最大の同期
- 2.0 環境は /etc/postfix_orig として残してある。 ⇒ &ref(postfix_orig.tgz);
- 2.3 環境はまだバイナリーパッケージがないので &ref(postfix-2.3.6.tar.gz,center,ソース); から導入した
- ソースからビルドする際に TLS、SASL、LDAP などはオプションで指定しないと組み込まれない (ので TLS と SASL を指定した)
- 2.3 からは SASL 認証に従来使われていた Cyrus SASL 以外に Dovcot SASL を利用できる &color(red){⇒ 今回は Dovcot SASL を利用することにする};
- ソースのビルド方法 ⇒ 最初に TLS、SASL を組み込むために(configure ではなく)make で Makefile を生成する点がポイント
[root@spirit postfix-2.3.6]# make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\" "-DUSE_TLS"' AUXLIBS="-lssl -lcrypto"
[root@spirit postfix-2.3.6]# make
[root@spirit postfix-2.3.6]# make install <------ インストール場所は全てデフォルトとした
-- make Makefile を繰り返した場合でも環境設定ファイル (=/etc/main.cf、/etc/master.cf など)は上書きされない
-- 2.0 環境では gnome の MTA セレクタが使えるように sendmail = sendmail.postfix としてある部分を変更した(しないとエラーになる)
- main.cf、master.cf を Postfix 2.3.6 キュメントに従って編集する (一部 2.0系から変更されている)
-- &ref(main.cf_asof_20070105);
-- &ref(master.cf_asof_20070105);
*** [[Dovecot 1.0RC15 の導入 (2006-1-5) :http://www.dovecot.org/]] [#kfe765df]
- Postfix 2.3.6 の SMTP Auth 認証に Dovcot SASL を指定したが、Cent 標準の Dovcot(=0.99) では Dovecot SASL が無かった
- /etc/dovecot.conf を &ref(dovecot.conf_099,center,バックアップ); してから yum remove で一旦標準 Dovecot 環境を削除した
- ソースから Dovecot をビルドした (特にオプション指定などはなく configure → make → make install で完了)
- ソースからインストールした場合には環境設定 (=dovecot.conf) は /usr/local/etc の下にできる
- 環境設定の内容は 0.99 から変更されている部分があるので、雛形(=/usr/local/etc/dovecot-example) から修正して作成
- この際 Postfix ドキュメントに指定された方法で Dovecot SASL の設定を反映した
-- &ref(dovecot.conf_asof_20070105);
- マニュアルにはimap/imaps/pop3/pop3s を別々にスクリプト起動する方法が推奨されているが、CentOS 標準の起動スクリプト(=/etc/init.d/dovecot) を参考にまとめてマスタープログラムが起動するようにした
-- &ref(dovecot_startscript_asof_20070105);
-- 起動直後のプロセス起動状態 (imap はログインあり、pop3 は待機状態 )
[root@spirit postfix-2.3.6]# ps aux | grep "pop3\|imap\|dovecot"
root 5533 0.0 0.0 1868 580 ? Ss 14:39 0:00 /usr/local/sbin/dovecot <--- マスタープロセス
root 5535 0.0 0.0 2956 976 ? S 14:39 0:00 dovecot-auth <---- 認証用プロセス
dovecot 6032 0.0 0.0 4184 1660 ? S 16:32 0:00 imap-login
dovecot 6040 0.0 0.0 4428 1440 ? S 16:32 0:00 imap-login
dovecot 6055 0.0 0.0 5172 1664 ? S 16:36 0:00 imap-login
503 6092 0.0 0.0 7520 1836 ? S 16:42 0:00 imap
dovecot 6093 0.0 0.0 4616 1664 ? S 16:42 0:00 imap-login
503 6108 0.0 0.0 6764 1836 ? S 16:50 0:00 imap
dovecot 6109 0.0 0.0 4208 1660 ? S 16:50 0:00 imap-login
munakata 10569 0.0 0.0 7204 1848 ? S 17:13 0:00 imap
dovecot 10570 0.0 0.0 4972 1440 ? S 17:13 0:00 imap-login
dovecot 10584 0.0 0.0 5508 1440 ? S 17:14 0:00 imap-login
munakata 10586 0.0 0.0 7356 1868 ? S 17:14 0:00 imap <---- ログイン中プロセス
dovecot 10703 0.0 0.0 4024 1436 ? S 17:31 0:00 pop3-login <--- ログイン待ちプロセス
dovecot 10751 0.0 0.0 4532 1432 ? S 17:46 0:00 pop3-login
dovecot 10753 0.0 0.0 4876 1432 ? S 17:46 0:00 pop3-login
-- ソースからビルドして起動したときに dovecot というユーザーがないといってエラーになったので、ユーザを追加した
- &color(red){最終的にサーバーとして imaps[munakata, public_mail, stored_mail]と pop[headline, dtv_rec] を動かしている};
*** headerchecks の設定 [#aeb1578a]
- 上記設定で postfix + SMTP Auth + TLS の環境が立ち上がったので、懸案であった [[ヘッダー内のローカルネットワーク情報の削除>Cent_Postfilter]] の設定を付加
*** クライアントの設定 [#x683eccb]
- SMTP Auth でユーザー認証が通ればメールリレーを許可する設定なので、送信メールにはログインが必要
- 更に SMTP 認証時には プレーンテキストでの認証を拒否する設定にしているので SSL or TLS で接続させる必要がある
- 現状 IMAP メール受信には SSL を利用、POP には TLS を利用している
-- IMAP サーバーに TLS で接続できないのは Dovecot がサポートしていないから ??? ・・・・ そんなはずはないが
*** 参考 URL [#z75c11c6]
- [[fetchmail project home:http://fetchmail.berlios.de/fetchmail]]
- [[fetchmail project man ページ:http://fetchmail.berlios.de/fetchmail-man.html]]
- [[amavisd-new settings for postfix (重要):http://www.ijs.si/software/amavisd/README.postfix.txt]]