#contents
* winmail.dat 対策 [#ba1207cd]
//** http://www.saga-ed.jp/workshop/edq01449/winmail.htm [#ge2010d0]
*** Winmail Opener [#kb783729]
- http://www.eolsoft.com/freeware/winmail_opener/
- &ref(winmail_opener.exe);
*** TNEF [#o2f7d39b]
- &ref(fentun.exe,center, Fentun プログラム);
- http://www.fentun.com/
- http://zfacts.com/p/64.html
*** WM Decorde [#z7e7fb4d]
- &ref(WMDecode.exe,center, WM Decordeプログラム);
- http://www.biblet.freeserve.co.uk/
* MTA(SMTP)の導入 [#lde14ee8]
** postfix の導入1(FC2 のdefault環境) [#o4e16b35]
*** インストール済パッケージの確認 [#oc8ef3c3]
[root@power root]# rpm -q cyrus-sasl
cyrus-sasl-2.1.18-2.2
[root@power root]# rpm -q postfix
postfix-2.0.18-4
*** FC2 の初期状態では sendmail が有効になっているので、postfix に切替る [#q20e537e]
- sendmail の停止
[root@power root]# /etc/init.d/sendmail status
sendmail (pid 2209 2200) を実行中...
[root@power root]# /etc/init.d/sendmail stop
sendmail を停止中: [ OK ]
sm-clientを停止中: [ OK ]
- MTA を postfix に切替える
[root@power root]# /usr/sbin/alternatives --config mta
There are 2 programs which provide 'mta'.
Selection Command
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number:2
*** /etc/postfix/main.cf の設定 (必要な箇所だけ変更) [#jf374c1e]
- myhostname などの設定
60 # INTERNET HOST AND DOMAIN NAMES
61 #
62 # The myhostname parameter specifies the internet hostname of this
63 # mail system. The default is to use the fully-qualified domain name
64 # from gethostname(). $myhostname is used as a default value for many
65 # other configuration parameters.
66 #
67 #myhostname = host.domain.tld
68 #myhostname = virtual.domain.tld
69 myhostname = webmail.hmuna.com
-- hmuna.com ドメイン内に メール転送エンジン(MTA) が複数存在することは問題ない
-- MTA の名前を区別するために webmail.hmuna.com という hostname をつけた。
-- リレーの設定をしていないので、外部に直接メールを送れるが外部からは受け取れない状態
- mynetworks の設定
# Alternatively, you can specify the mynetworks list by hand, in
# which case Postfix ignores the mynetworks_style setting.
#
# Specify an explicit list of network/netmask patterns, where the
# mask specifies the number of bits in the network part of a host
# address.
#
# You can also specify the absolute pathname of a pattern file instead
# of listing the patterns here. Specify type:table for table-based lookups
# (the value on the table right-hand side is not used).
#
#mynetworks = 168.100.189.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
# muna only defines mynetworks including office mail system
mynetworks = 202.221.8.114/32, 192.168.1.0/24, 127.0.0.0/8
- MailDir 方式の設定
# DELIVERY TO MAILBOX
#
# The home_mailbox parameter specifies the optional pathname of a
# mailbox file relative to a user's home directory. The default
# mailbox file is /var/spool/mail/user or /var/mail/user. Specify
# "Maildir/" for qmail-style delivery (the / is required).
#
# muna adopt Maildir style expecting Courier-IMAP
#
#home_mailbox = Mailbox
home_mailbox = Maildir/
*** 各ユーザーの MailDir の作成 [#ic786a82]
- MailDirMake を使って各ユーザーのホームディレクトリに MailDir を作成すると書かれているが、FC2 には maildirmake がないことがわかった。
- 別の web http://poinca.ikezoe.net/info/postfix_install.html に最初のアクセス時に自動的に出来るとも書いているページを見つけたので、とりあえず munakata、headline(cnnatlanta)、admin(administrator)のユーザ登録だけを行っておく。
*** postfix だけを利用したメール転送の実験 [#t97eb2d0]
- コマンドラインから sendmail (=postfix の互換コマンド)を利用してメールを送る方法
sendmail -s "mail titile" munakata (return)
Mail message
( ctrl+d )
cc: ( return )
- 実際に root から munakata にメールを転送してみる
[root@power root]# mail -s "postfix local mail test" munakata
This is inside server mail trans test
Cc:
[root@power root]#
- /var/log/maillog を確認する ---- メールが正常に送られている。
Jan 1 09:30:59 power postfix/pickup[6155]: 71C8A894069: uid=0 from=<root>
Jan 1 09:30:59 power postfix/cleanup[6221]: 71C8A894069:
message-id=<20050101003059.71C8A894069@webmail.hmuna.com>
Jan 1 09:30:59 power postfix/nqmgr[3304]: 71C8A894069:
from=<root@webmail.hmuna.com>, size=362, nrcpt=1 (queue active)
Jan 1 09:30:59 power postfix/local[6223]: 71C8A894069:
to=<munakata@webmail.hmuna.com>, orig_to=<munakata>, relay=local, delay=0, status=sent (maildir)
- /home/munakata の下には Maildir が自動的に作られた
*** 課題1:/var/spool/postfix のパーミションの修正を行った [#e63f9fcc]
- root → to:munakata cc:admin のメールを送ったところ admin (一般ユーザあて)のメールがエラーになった(/var/log/maillog)
Jan 1 01:02:16 power postfix/pickup[3303]: 7634389405E: uid=0 from=<root>
Jan 1 01:02:16 power postfix/cleanup[3688]:
7634389405E:messageid=<20041231160216.7634389405E@webmail.hmuna.com>
Jan 1 01:02:16 power postfix/nqmgr[3304]:7634389405E:from=
<root@webmail.hmuna.com>, size=335, nrcpt=1 (queue active)
Jan 1 01:02:16 power postfix/local3690]:7634389405E:
to=<postfix@webmail.hmuna.com>, orig_to=<admin>, relay=local, delay=0,
status=bounced (maildir delivery failed:create/var/spool/postfix/Maildir/
tmp/1104508936.P3690.power.hmuna.com: Permission denied)
Jan 1 01:02:16 power postfix/cleanup[3688]: 7AF8E89405F:
messageid=<20041231160216.7AF8E89405F@webmail.hmuna.com>
Jan 1 01:02:16 power postfix/nqmgr[3304]: 7AF8E89405F: from=<>,
size=2123,nrcpt=1 (queue active)
Jan 1 01:02:16 power postfix/local[3690]: 7AF8E89405F:
to=<postfix@webmail.hmuna.com>, orig_to=<root@webmail.hmuna.com>,
relay=local, delay=0, status=bounced (maildir delivery failed: create
/var/spool/postfix/Maildir/tmp/1104508936.P3690.power.hmuna.com: Permission denied)
-- root → admin あてのメールが届かない理由があるようだ (postfix の設定とは別の問題と思われる、admin というユーザー名が良くない ?)
-- 不達の連絡を root に返そうとしたところ、root 用の Maildir の作成ができなかったようだ
-- 何故か root の Maildir は /root の下ではなく、/var/spool/postfix の下に出来るらしい。 よく見ると root あてではなく postfix あてのメールなのかもしれない
-- /var/spool のディレクトリを見ると、postfix ディレクトリは root.root となっている。
-- %%''COLOR(RED){/var/spool/postfix ディレクトイリのオーナーを他にならって postfix.postfix と変更する。}''%%
[root@power root]# chown postfix.postfix /var/spool/postfix/
[root@power root]# ls -l /var/spool/
合計 64
drwxr-xr-x 2 root root 4096 12月 24 20:30 anacron
drwx------ 3 daemon daemon 4096 12月 24 16:55 at
drwxrwx--- 2 smmsp smmsp 4096 12月 31 04:03 clientmqueue
drwx------ 2 root root 4096 12月 24 21:15 cron
drwx--x--- 3 root sys 4096 12月 22 23:01 cups
drwxr-xr-x 2 root root 4096 3月 12 2004 lpd
drwxrwxr-x 2 root mail 4096 1月 1 00:40 mail
drwxr-xr-x 3 root root 4096 12月 24 17:04 mailman
drwx------ 2 root mail 4096 12月 31 04:03 mqueue
drwxr-xr-x 15 postfix postfix 4096 1月 1 02:18 postfix
drwxr-xr-x 2 rpm rpm 4096 12月 29 05:17 repackage
drwxrwxrwt 2 root root 4096 12月 18 12:42 samba
drwxr-x--- 2 squid squid 4096 10月 13 02:42 squid
drwxr-xr-x 3 root root 4096 11月 21 18:26 squirrelmail
drwxr-xr-x 2 root root 4096 5月 12 2004 up2date
drwxrwxrwt 2 root root 4096 3月 3 2004 vbox
-- postfix ディレクトリーのオーナーを変更したら正常にメールが通った
Jan 1 02:18:30 power postfix/pickup[3987]: D3C0E89405F: uid=0 from=<root>
Jan 1 02:18:30 power postfix/cleanup[4019]: D3C0E89405F:
message-id=<20041231171830.D3C0E89405F@webmail.hmuna.com>
Jan 1 02:18:30 power postfix/nqmgr[3304]: D3C0E89405F:
from=<root@webmail.hmuna.com>, size=392, nrcpt=2 (queue active)
Jan 1 02:18:30 power postfix/local[4021]: D3C0E89405F:
to=<postfix@webmail.hmuna.com>, orig_to=<admin>, relay=local, delay=0, status=sent (maildir)
Jan 1 02:18:30 power postfix/local[4022]: D3C0E89405F:
to=<postfix@webmail.hmuna.com>, orig_to=<root>, relay=local, delay=0, status=sent (maildir)
-- ''COLOR(RED){上記の変更を行ってから /var/log/maillog に以下のエラーが出ていることを確認}''
Jan 1 17:01:10 power postfix/postfix-script: warning: not owned by root: /var/spool/postfix
-- /var/spool/postfix のオーナーを root に戻して、その配下のディレクトリーのパーミションを postfix.root とした。
[root@power certs]# ls -l /var/spool/
合計 64
drwxr-xr-x 2 root root 4096 12月 24 20:30 anacron
drwx------ 3 daemon daemon 4096 12月 24 16:55 at
drwxrwx--- 2 smmsp smmsp 4096 12月 31 04:03 clientmqueue
drwx------ 2 root root 4096 12月 24 21:15 cron
drwx--x--- 3 root sys 4096 12月 22 23:01 cups
drwxr-xr-x 2 root root 4096 3月 12 2004 lpd
drwxrwxr-x 2 root mail 4096 1月 1 10:36 mail
drwxr-xr-x 3 root root 4096 12月 24 17:04 mailman
drwx------ 2 root mail 4096 12月 31 04:03 mqueue
drwxr-xr-x 17 root root 4096 1月 2 02:09 postfix
drwxr-xr-x 2 rpm rpm 4096 12月 29 05:17 repackage
drwxrwxrwt 2 root root 4096 12月 18 12:42 samba
drwxr-x--- 2 squid squid 4096 10月 13 02:42 squid
drwxr-xr-x 3 root root 4096 11月 21 18:26 squirrelmail
drwxr-xr-x 2 root root 4096 5月 12 2004 up2date
drwxrwxrwt 2 root root 4096 3月 3 2004 vbox
[root@power certs]# ls -l /var/spool/postfix/
合計 60
drwx------ 5 postfix root 4096 1月 1 02:18 Maildir
drwx------ 7 postfix root 4096 1月 2 04:02 active
drwx------ 3 postfix root 4096 1月 2 02:25 bounce
drwx------ 2 postfix root 4096 1月 1 22:44 corrupt
drwx------ 2 postfix root 4096 1月 1 22:44 defer
drwx------ 2 postfix root 4096 1月 1 22:44 deferred
drwx------ 2 postfix root 4096 1月 1 22:44 flush
drwx------ 2 postfix root 4096 1月 1 22:44 hold
drwx------ 7 postfix root 4096 1月 2 04:02 incoming
drwx-wx--- 2 postfix root 4096 1月 2 04:02 maildrop
drwxr-xr-x 2 postfix root 4096 1月 2 02:25 pid
drwx------ 2 postfix root 4096 1月 2 02:21 private
drwx--x--- 2 postfix root 4096 1月 2 02:21 public
drwx------ 2 postfix root 4096 1月 1 22:44 saved
drwx------ 2 postfix root 4096 1月 2 02:09 trace
*** 再考 : root あてのメールが受信できない問題 [#e6651f35]
- /var/log/maillog のエラーメッセージ
Nov 5 10:26:23 power postfix/local[3911]: 39B818940FA:
to=<root@hmuna.com>, relay=local, delay=0, status=bounced
(can't create user output file. Command output: procmail: Couldn't create "/var/mail/nobody" )
- 結論として procmail を利用したメールリレーを行っている場合には、root あてのメールは受信できないという仕様であることがわかった ⇒ http://www.postfix.org/faq.html#root
Root's mail is delivered to nobody
If you use procmail (or some other command) for local mail delivery,
Postfix will not deliver mail as root. Instead, Postfix runs procmail
(or whatever) as nobody. Perhaps some day Wietse will trust Postfix
enough to run external commands as root.
Solution: just like you're not supposed to log in as root
(except for unusual conditions), you're not supposed to receive mail as root.
Create a mail alias for root that forwards mail to a real user.
/etc/aliases:
root: you
Execute the command newaliases whenever you change the alias database.
On some systems the alias database is not in /etc/aliases. To find out
the location for your system, execute the command postconf alias_maps.
- これは procmail が root 権限で動作することの危険性に対する配慮からである
- システムが発行する root あてのメールを別のアカウント (=server_admin)に転送する設定を alian で行って回避する
- alias の設定をしてもうまく root あてのメールが server_admin に届かないので調査してみた ( 上の説明にある postconf alias_maps を実行 )
[root@power etc]# postconf alias_maps
alias_maps = hash:/etc/postfix/aliases
- /etc/alias ではなく /etc/postfix/aliases に設定が必要であることが分かった
*** 課題1.5:パーミション関連 微調整 [#kec743ff]
- postfix バージョンアップ後の再起動でこんなエラーが出たので
Jan 2 14:37:15 power postfix/postfix-script: warning:
not owned by group postdrop: /var/spool/postfix/public
Jan 2 14:37:15 power postfix/postfix-script:
warning: not owned by group postdrop: /var/spool/postfix/maildrop
- こんな風にパーミションを変更した
[root@power root]# chown postfix.postdrop /var/spool/postfix/public
[root@power root]# chown postfix.postdrop /var/spool/postfix/maildrop
[root@power root]# ls -l /var/spool/postfix/
合計 60
drwx------ 5 postfix root 4096 1月 1 02:18 Maildir
drwx------ 7 postfix root 4096 1月 2 04:02 active
drwx------ 3 postfix root 4096 1月 2 02:25 bounce
drwx------ 2 postfix root 4096 1月 1 22:44 corrupt
drwx------ 2 postfix root 4096 1月 1 22:44 defer
drwx------ 2 postfix root 4096 1月 1 22:44 deferred
drwx------ 2 postfix root 4096 1月 1 22:44 flush
drwx------ 2 postfix root 4096 1月 1 22:44 hold
drwx------ 7 postfix root 4096 1月 2 04:02 incoming
drwx-wx--- 2 postfix postdrop 4096 1月 2 04:02 maildrop
drwxr-xr-x 2 postfix root 4096 1月 2 02:25 pid
drwx------ 2 postfix root 4096 1月 2 14:37 private
drwx--x--- 2 postfix postdrop 4096 1月 2 14:37 public
drwx------ 2 postfix root 4096 1月 1 22:44 saved
drwx------ 2 postfix root 4096 1月 2 02:09 trace
*** 課題2:何故 admin ユーザだけは /home/admin の下に MailDir が出来ないのか? [#bd42c6f5]
- 上記の問題を解決したところ、メール転送自体でのエラーはなくなったが Maildir が作成されていない
- root → admin と root → munakata のメール転送ログを比較した
-- root → admin の転送
Jan 1 10:11:52 power postfix/pickup[6155]: 53B00894069: uid=0 from=<root>
Jan 1 10:11:52 power postfix/cleanup[6534]: 53B00894069:
messageid=<20050101011152.53B00894069@webmail.hmuna.com>
Jan 1 10:11:52 power postfix/nqmgr[3304]: 53B00894069:
from=<root@webmail.hmuna.com>,
size=373, nrcpt=1 (queue active)
Jan 1 10:11:52 power postfix/local[6536]: 53B00894069:
to=<postfix@webmail.hmuna.com>, orig_to=<admin>, relay=local, delay=0,status=sent (maildir)
-- root → munakata の転送
Jan 1 10:14:17 power postfix/pickup[6155]: 54C3489406C: uid=0 from=<root>
Jan 1 10:14:17 power postfix/cleanup[6542]: 54C3489406C:
messageid=<20050101011417.54C3489406C@webmail.hmuna.com>
Jan 1 10:14:17 power postfix/nqmgr[3304]: 54C3489406C:
from=<root@webmail.hmuna.com>, size=344, nrcpt=1 (queue active)
Jan 1 10:14:17 power postfix/local[6543]: 54C3489406C:
to=<munakata@webmail.hmuna.com>, orig_to=<munakata>, relay=local, delay=0, status=sent (maildir)
- 最後の to= の宛先が異なるだけで他は同じ、何故 admin あては最後が postfix になるのか?
- よく分からないが、postfix のプリセットユーザーで admin が postfix の管理者として登録されていて、意図的に自分に返しているように見える (main.cf を見るべきだけど...)
- ''COLOR(RED){結論として、admin というユーザ名は混乱の元なので server_admin(server_admin) に変更した。 ちなみに manager では admin と同じことだった。}''
** postfix の導入2 (2.1.4-5 に更新) [#c9dd8d07]
- SMTP 認証(SMTP Auth+TLS)をサポートするために postfix バージョンアップした
- SMTP 経由でのメール送信がエラーになったいたために、以前からの懸案であった SMTP Auth の導入を決意したもの
- FC2 default の postfix でもできたのかもしれない(きっとできる)が、''COLOR(BLUE){[[パソコンおやじ:http://acorn.zive.net/~oyaji/mail2/smtp-auth-tls.htm]]}'' さんの纏めた手順に従って更新を行った
-- 今回とった方法はログイン時から TLS 化し、その後、SMTP AUTH で認証する方式です
-- PLAIN 認証しか対応できない Outlook Express でもセキュリティを確保できます。
-- 当初、ソースからパッチを当ててコンパイルしてみたのですがうまくいかず、
-- いろいろ調べたところ Postfix のホームページからのリンクで Add-on Software にT LS化 を含めた RPM を作成できる方法がありましたので、これで行くことにしました。
*** RPM を作成してインストール [#a900a374]
- まずは、[[こちら:http://www.sahughes.jp/]] のサービスの中にあるサポートのダウンロードから最新の Source RPM を /usr/src/redhat/SOURCES 配下にダウンロード
- ダウンロードしたのは、postfix-2.1.4-5.src.rpm
- パッケージを展開する。このとき、user と group が違うと警告が出るが無視してよい。
[root@power root]# cd /usr/src/redhat/SOURCES/
[root@power SOURCES]# wget ftp://ftp.sanguine.net/pub/postfix/official/2.1/SRPMS/postfix-2.1.4-5.src.rpm
--12:27:06-- ftp://ftp.sanguine.net/pub/postfix/official/2.1/SRPMS/postfix-2.1.4-5.src.rpm
=> `postfix-2.1.4-5.src.rpm.1'
ftp.sanguine.net をDNSに問いあわせています... 61.115.7.227
ftp.sanguine.net[61.115.7.227]:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。 ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。 ==> CWD /pub/postfix/official/2.1/SRPMS ... 完了しました。
==> PASV ... 完了しました。 ==> RETR postfix-2.1.4-5.src.rpm ... 完了しました。
長さ: 2,564,530 (確証はありません)
100%[=======================================================>] 2,564,530 51.69K/s ETA 00:00
12:27:55 (55.17 KB/s) - `postfix-2.1.4-5.src.rpm.1' saved [2,564,530]
[root@power SOURCES]# rpm -Uvh postfix-2.1.4-5.src.rpm
- ビルドのオプションとしてSASL(今回はSASL2とした。)と TLS オプションを設定し、新しい postfix.spec ファイルを作成する。
- デフォルトで LDAP オプションが有効になっているのでオフとした。
[root@power SOURCES]# export POSTFIX_SASL=2
[root@power SOURCES]# export POSTFIX_TLS=1
[root@power SOURCES]# export POSTFIX_LDAP=0
[root@power SOURCES]# sh make-postfix.spec
- バイナリ RPM を作成する。下記操作で、/usr/src/redhat/RPMS/i386 配下に postfix-2.1.4-5.sasl2.tls.rh9.i386.rpm という RPM が作成される
# cd /usr/src/redhat/SPECS
# rpmbuild -ba postfix.spec
- 上記で作成されたバイナリRPM(postfix-2.1.4-5.sasl2.tls.rh9.i386.rpm)をインストールする
- 新しい cf を作成するため、main.cf、master.cf を事前にリネームしておく
[root@power SPCES]# mv /etc/postfix/main.cf /etc/postfix/main.cf_2.0.18_muna_modified
[root@power SPCES]# mv /etc/postfix/master.cf /etc/postfix/master.cf_2.0.18_muna_modified
[root@power SPCES]# rpm -Uvh /usr/src/redhat/RPMS/i386/postfix-2.1.4-5.sasl2.tls.fc2.i386.rpm
-- バックアップされた main.cf → &ref(main.cf_2.0.18_muna_modified);
-- バックアップされた master.cf → &ref(master.cf_2.0.18_muna_modified);
- ''COLOR(RED){問題発生1}'' : RPM のインストールがエラーになった
-- 最初から導入されていた cyrus-sasl-2.1.18-2.2 と競合するといわれた
[root@power root]# rpm -Uhv/usr/src/redhat/RPMS/i386/postfix-2.1.4-5.sasl2.tls.fc2.i386.rpm
Preparing... ########################################### [100%]
file /etc/sysconfig/saslauthd from install of postfix-2.1.4-5.sasl2.tls.fc2
conflicts with file from package cyrus-sasl-2.1.18-2.2
-- --force を付けて強引にインストールしたら、何かワーニングが出たがインストールできた。
[root@power root]# rpm -Uhv --force /usr/src/redhat/RPMS/i386/postfix-2.1.4-5.sasl2.tls.fc2.i386.rpm
Preparing... ########################################### [100%]
1:postfix ########################################### [100%]
link /usr/share/man/man8/sendmail.8.gz incorrect for slave mta-sendmailman
(/usr/share/man/man1/sendmail.1.gz mta-sendmailman)
-- 上記の影響かどうか不明(途中で色々やったので)だが、FC で標準的に実装されている SMTP を sendmail(default) と postfix で切替える機能がおかしい
-- 実際には切替える必要は無いので、このエラーは無視して先に進める
[root@power root]# alternatives --config mta
There are 1 programs which provide 'mta'.
Selection Command
-----------------------------------------------
* 1 /usr/sbin/sendmail.sendmail
Enter to keep the current selection[+], or type selection number:
*** /etc/postfix/main.cf の編集 (一般的な設定) [#o7ab7982]
- %%2005-1-1 時点での 一般的な設定だけを行った main.cf%%
- この設定を行っただけで、SMTP 送信エラーの問題は解決した (当然 認証なしで設定)
- 2005-1-13 端山氏の指導で設定を見直した → &ref(main.cf); &ref(master.cf);
-- myhostname = power.hmuna.com ← マシンの名前を指定する
-- mydomain = hmuna.com ← ドメイン名を指定する
-- myorigin = $myhostname ← myhostname を指定する
-- mydestination = $myhostname, localhost.$mydomain, $mydomain
-- mynetworks = 202.221.8.114/32, 192.168.1.0/24, 127.0.0.0/8
*** aliases の修正 [#jc7b3a8a]
- RPM からインストールすると root 宛てのメッセージが postfix 宛てに配送されるようになっています。
- postfix ユーザを追加するか、メールを受け取れる実在するユーザに配送先を変更する必要があります。
- 今回 munakata あてにサーバー管理関係のメールが来ると煩雑なので、server_admin というアカウントに転送されるように設定した
- /etc/aliases 編集後は newaliases コマンドを実行してデータベースを更新する事を忘れずに
# muna add postfix entry
postfix: server_admin
*** /etc/postfix/main.cf の編集 (認証関係の設定) [#o7ab7982]
- ''COLOR(RED){問題発生2}'' :パソコンおやじ が引用しているファイルが無い
-- おやじ さんの参照している (その他のサイトでも引用していた) sample-auth.cf というファイルがない。
-- 昔使っていた ( postfix をソースから導入した ) FC1 のマシン上にもなかった
-- 仕方ないので 直接カット&コピーで main.cf に SASL 関連の設定と TLS の設定を追加することにした
- SASL 関係は実際にはいくらも設定がない、問題になりそうな場所も少ない (今回は UNIX サーバー認証(=PAM 認証) を使う)
# ------------------------------------------------------------------------------------------------------
## muna add SASL setting refered from パソコンおやじ
# ------------------------------------------------------------------------------------------------------
# SMTP サーバ制御の設定
# SASLによるSMTP認証を使用
smtpd_sasl_auth_enable = yes
# 使用可能な認証メカニズムの設定(そのまま)
smtpd_sasl_security_options = noanonymous
# ローカル認証 realm の名前を設定
# Postfixのデフォルトはmyhostnameである。
# 実はここで大嵌りで、PAM 認証の場合はここは設定なしのままでないと認証できないので注意が必要。
# 但し、これはsaslauthdによるPAM 認証の場合で、sasl パスワード認証の場合は、myorigin で設定した
# ドメイン(ホスト)名と同一の値を設定しないと、認証に失敗する。
#
# muna : 当面は PAM 認証を利用するので、上記に従い ”設定なし” としておこう
#
#smtpd_sasl_local_domain = $mydomain
#smtpd_sasl_local_domain = $myhostname
# リレーを許可するものを設定(sample-smtpd.cf)
# ・permit_mynetworks : mynetworksで指定されたネットワークからのリレーを許可。
# ・permit_sasl_authenticated : SMTP認証を通過したものは許可。
# ・reject_unauth_destination : 目的地が $inet_interfaces、$mydestination $virtual_alias_domains
# または $virtual_mailbox_domains にマッチするアドレス宛のメール、及び$relay_domains にマッチする
# 目的地へのメール以外を拒否。
# (本設定で不正な外部からのメールをrejectする。check_relay_domainsは2.0では使用
# されなくなった。)
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
# AUTHコマンドのサポートを認識できないクライアントへの対応(sample-compatibility.cf)
# Outlook Express 4 および Exchange 5等はAUTH コマンドをサポートしていることを認識できないので、
# 使用時は下記のような設定を追加する。おやじはOE 6.0なのでnoのまま。
broken_sasl_auth_clients=yes
- TLS 関係で引用するサーバー証明書の関係のファイル名、ロケーションは適宜変更した
# ------------------------------------------------------------------------------------------------------
## muna add TLS setting refered from パソコンおやじ
# ------------------------------------------------------------------------------------------------------
# サーバ証明書/鍵関係の設定を変更(RSAのみ対応)
smtpd_tls_cert_file = /usr/local/certs/webmail_server.crt
smtpd_tls_key_file = /usr/local/certs/server.key
# CA関係の設定を変更
smtpd_tls_CAfile = /usr/local/certs/demoCA/cacert.pem
smtpd_tls_CApath = /usr/local/certs/demoCA
# ログレベルの変更(最低レベル)
# smtpd_tls_loglevel = 0
smtpd_tls_loglevel = 1
# TLS使用(そのまま)
smtpd_use_tls = yes
# 認証はTLS使用のみ(TLSのみの場合はコメントアウトを外しyesに変更)
# smtpd_tls_auth_only = no
# セッションキャッシュの設定(そのまま)
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
# 証明書は前述の方法で作成
#smtpd_tls_dh1024_param_file = /etc/postfix/dh_1024.pem
#smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
# TLS用乱数デバイスの指定
tls_random_source = dev:/dev/urandom
# tls_random_source = egd:/var/run/egd-pool
# tls_random_bytes = 32
# tls_random_reseed_period = 3600s
- SASL / TLS 関係の設定を書き加えた main.cf → &ref(main_sasltls.cf);
- SASL / TLS 関係の設定を書き加えた master.cf → &ref(master_sasltls.cf);
*** saslauthd 関係の設定 [#n9b59bd5]
- SMTP AUTHで使用する saslauthd 関係の設定をします。
-- 具体的には、saslauthd を起動し PAM による認証(UNIX パスワードによる認証)が行われるようにします。
-- sasl パスワードで認証する場合は、ここの項目は設定しないこと。
--- /usr/lib/sasl2/smtpd.conf に以下の設定がされているか確認し、異なる場合は下記のように設定する。
--- これにより、saslauthd によりPLAIN 認証と LOGIN 認証がなされる。]
pwcheck_method: saslauthd
mech_list: plain login
--- /etc/sysconfig/saslauthdに下記のように設定する。(もともとなっていた)
--- これにより、 saslauthd 起動スクリプトは pam による認証を行うオプションで起動する。
MECH=pam
--- saslauthd の起動スクリプトを有効にし起動する
# chkconfig --level 345 saslauthd on
# service saslauthd start
*** sendmail互換プログラムの修正 [#t1b87517]
- messages に sendmail の path がおかしいと出ていたので調査したところ、/usr/sbin/sendmail が互換プログラムに置き換わっておらず、CGI からのメール利用ができなくなっていました。
- CGI を直すのが面倒なので、下記で修正しました。
# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
# ln -s /usr/sbin/sendmail.postfix /usr/sbin/sendmail
*** postfix w/SASL, TLS の起動 [#d4b18529]
# chmod 755 /etc/rc.d/init.d/postfix
# chkconfig --add postfix
# chkconfig --list postfix
postfix 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
# service postfix start
- 起動後に、netstat -ln (netstat -an --tcp) で25番と465番ポートが Listen 状態になっているか確認
[root@power postfix]# netstat -an --tcp | grep -e 25 -e 445
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN
*** クライアント側の設定 [#f1669c99]
&ref(SMTP-AuthTLS2.JPG);
&ref(SMTP-AuthTLS.JPG);
** Postfix main.cf の設定マニュアル [#c9a7d0de]
- 日本語マニュアル添付 → &ref(Postfix_manual.txt);
- main.cf の設定での注意として
myhostname = ホスト名
mydomain = ドメイン名
inet_interfaces = all mydestination = myhostname, localhost.$mydomain, $mydomain
-- この中で ''COLOR(RED){(myhostname には自分のIPを逆引きした結果を入れておくべきである)}''
----
//
// courier-IMAP の導入
//
* MUA の導入 [#afc5d8a3]
** MUA の導入 :courier-IMAP (4.0.0 2005-1-1) の導入 [#w9d79811]
*** 必要なファイルの検索とダウンロード [#qf1b903a]
- FerdaCore1自宅メールサーバーで安定現在稼働中の courier-IMAP を導入することにする
-- FC1 環境ではソースからフルビルドしたが、今回は後の管理を rpm に集約できるよう ソースから RPM を作ってインストールする
-- 最新版を [[開発サイト>http://www.courier-mta.org/?download.php]] から検索する。 今日時点の最新は (なんと) 今日リリースされた 4.0.0
-- 必要なファイルは2つある。 ''COLOR(RED){先に courier-authlib をインストールする必要がある点に注意}''
The Courier authentication library must be installed before building any Courier packages
that needs direct access to mailboxes
(in other words, all packages except for courier-sox and courier-analog).
--- courier-authlib-0.52.tar.bz2 → &ref(courier-authlib-0.52.tar.bz2);
--- courier-imap-4.0.0.tar.bz2 → &ref(courier-imap-4.0.0.tar.bz2);
-- ファイルを一般ユーザーとして、ユーザのホームに Download して解凍 ( tar -jxf )
[server_admin@power server_admin]$ ls -l
drwxrwxr-x 17 server_admin server_admin 12288 1月 2 22:13 courier-authlib-0.52
-rw------- 1 server_admin server_admin 1965591 1月 2 18:39 courier-authlib-0.52.tar.bz2
drwxrwxr-x 21 server_admin server_admin 4096 1月 2 20:12 courier-imap-4.0.0
-rw------- 1 server_admin server_admin 3031646 1月 2 18:14 courier-imap-4.0.0.tar.bz2
*** インストールの準備 (疑似 rpm 環境作成) [#tadecc5f]
- ''COLOR(RED){rpm の作成はまでの作業は root 以外のユーザアカウントでユーザーのホームディレクトリ直下で行う必要がある}''
- これは rpm をユーザートップディレクトリ配下に /usr/src/redhat/rpm と同じ構造のディレクトリを作成するため。
- 今回は server_admmin ユーザーのホームで以下のスクリプトを実行して、この疑似 rpm
ディレクトリ構造を作成した。
[server_admin@power courier-imap-4.0.0]$ mkdir -p $HOME/rpm/{SOURCES,SPECS,BUILD,SRPMS,RPMS/{i386}}
- /home/server_admin の配下に以下の構造ができた。
[root@power SPECS]# ls -l /home/server_admin/rpm/
合計 20
drwxrwxr-x 4 server_admin server_admin 4096 1月 3 04:00 BUILD
drwxrwxr-x 4 server_admin server_admin 4096 1月 2 20:03 RPMS
drwxrwxr-x 2 server_admin server_admin 4096 1月 2 21:50 SOURCES
drwxrwxr-x 2 server_admin server_admin 4096 1月 2 22:23 SPECS
drwxrwxr-x 2 server_admin server_admin 4096 1月 3 04:04 SRPMS
- これは下の redhat のデェフォルトの rpm の置き場所と同じファイル構造である
[root@power SPECS]# ls -l /usr/src/redhat/
合計 20
drwxr-xr-x 3 root root 4096 1月 1 22:43 BUILD
drwxr-xr-x 8 root root 4096 12月 29 05:17 RPMS
drwxr-xr-x 2 root root 4096 1月 2 12:27 SOURCES
drwxr-xr-x 2 root root 4096 1月 1 22:40 SPECS
drwxr-xr-x 2 root root 4096 1月 1 22:45 SRPMS
- 以下のコマンドを実行して、rpm プログラムに ''COLOR(RED){rpm のトップディレクトリーを読み変えさせる}'' ← このコマンドは重要
- このコマンドを server_admin ユーザーのログインスクリプトに書き加えておく
[server_admin@power courier-imap-4.0.0]$ echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros
*** courier-authlib のインストール (rpm の作成、rpm のインストール) [#p5d201ae]
- /home/server_admin/ 直下にサイトからソース tarball を Download して展開する
- [[INSTALL Document:https://wiki.hmuna.com:9443/ext_docs/courier-authlib/INSTALL.html]] を良く読む
- この中に rpm を作成する場合には .spec ファイルを編集するな... と書いてある
Do not try to hack the RPM build script to ignore these dependencies!
For simplicity's and maintainability sake the RPM build script creates all
available authentication modules. All extra authentication modules will
be built as optional subpackages. They do not have to be installed at runtime.
- また、mysql や open-ldap 関係のライブラリーを要求される (yum install で導入可能) が、これは rpm のビルド時だけに必要だから、気にせず導入して進めよとも書いてある。
Install the LDAP, MySQL, and PostgreSQL development libraries only for the
duration of building binary RPMs. They can be uninstalled afterwards.
- 先に必要なライブラリーを yum でインストールする ( rpmbuild でエラーが出てから対応すればよい)
[root@power courier-authlib-0.52]# yum install postgresql-devel
[root@power courier-authlib-0.52]# yum install mysql-devel
[root@power courier-authlib-0.52]# yum install expect
- 以下の手順に従って rpm を作成する (特に何も設定はしていない)
[server_admin@power courier-authlib-0.52]$ cp courier-authlib.spec ../rpm/SPECS/
[server_admin@power courier-authlib-0.52]$ cd ../rpm/SPECS/
[server_admin@power SPECS]$ rpmbuild -ba courier-authlib.spec
-- rpmbuild 時のログ → &ref(authlib_rpmbuild_log_0103.txt);
-- rpmbuild 再実行時のログ → &ref(authlib_rpmbuild_log_0103b.txt);
- su で root になってから rpm で courier-authlib をインストールする
[server_admin@power SPECS]$ su
Password:
[root@power SPECS]# rpm -ivh ../RPMS/i386/courier-authlib-*
Preparing... ########################################### [100%]
1:courier-authlib ########################################### [ 14%]
2:courier-authlib-debugin########################################### [ 29%]
3:courier-authlib-devel ########################################### [ 43%]
4:courier-authlib-ldap ########################################### [ 57%]
5:courier-authlib-mysql ########################################### [ 71%]
6:courier-authlib-pgsql ########################################### [ 86%]
7:courier-authlib-userdb ########################################### [100%]
- 作成した FedraCore2 用の rpm ダウンロード
+ → &ref(courier-authlib-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-debuginfo-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-devel-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-ldap-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-mysql-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-pgsql-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-userdb-0.52-1.2.i386.rpm);
*** courier-imap のインストール (rpm の作成、rpm のインストール) [#ia95f326]
- spec ファイルの編集 : 日本語文字コードの追加を行う (88行目付近)
[server_admin@power courier-imap-4.0.0] vi courier-imap.spec
87 %if %(test '%{xflags}' = '%%{xflags}' && echo 1 || echo 0)
88 %define xflags --enable-unicode=iso-2022-jp,iso-8859-1,utf-8 ← iso-2022-jp を追加する
89 %endif
- 上記の courier-authlib と同じ手順で rpm を作成する (一般ユーザに戻るのを忘れないように)
[server_admin@power courier-imap-4.0.0]$ cp courier-imap.spec ../rpm/SPECS
[server_admin@power courier-imap-4.0.0]$ cp ../courier-imap-4.0.0.tar.bz2 ../rpm/SOURCES
[server_admin@power courier-imap-4.0.0]$ cd ../rpm/SPECS
-- rpm 作成時のログ → &ref(imap_rpmbuild_log_0103.txt);
- su で root になってから rpm で courier-imap をインストールする
[server_admin@power SPECS]$ su
Password:
[root@power SPECS]# rpm -ivh ../RPMS/i386/courier-imap-*
Preparing... ########################################### [100%]
1:courier-imap-debuginfo ########################################### [ 50%]
2:courier-imap ########################################### [100%]
- 作成した FedraCore2 用の rpm
+ → &ref(courier-imap-4.0.0-1.2.i386.rpm);
+ → &ref(courier-imap-debuginfo-4.0.0-1.2.i386.rpm);
*** courier-IMAP の設定ファイル ( /usr/lib/courier-imap/etc/ ) の編集 [#b1e0c597]
- /usr/lib/courier-imap/etc/ に 接続方式毎に複数の設定ファイルが準備されている。
-- pop3d : 変更なし headline アカウントがSSLを使えないため
-- pop3d-ssl : メール証明書の定義を変更
-- imapd : 変更なし、最終的には起動しない設定に変更予定
-- imapd-ssl : メール証明書の定義を変更
- メール証明書の変更箇所
#TLS_CERTFILE=/usr/lib/courier-imap/share/pop3d.pem
# muna modify to refer /usr/local/certs/webmail.pem
TLS_CERTFILE=/usr/local/certs/webmail.pem
*** 各ユーザーの Maildir を作成 ( courier の場合、root でも /root/Maildir が作れる) [#a987b5d0]
[root@power root]# /usr/lib/courier-imap/bin/maildirmake Maildir
[root@power root]# ls -l
合計 188
drwxr-xr-x 2 root root 4096 1月 1 21:26 Desktop
drwx------ 5 root root 4096 1月 2 20:38 Maildir
-rw-r--r-- 1 root root 1826 12月 24 17:04 anaconda-ks.cfg
drwx------ 8 root root 4096 1月 1 21:07 evolution
-rw-r--r-- 1 root root 64076 12月 24 17:04 install.log
-rw-r--r-- 1 root root 5890 12月 24 17:04 install.log.syslog
*** courier-IMAP の起動状況の確認 [#wd2fbc44]
- /var/log/maillog を見ると設定したプロセスが正常に起動していることが分かる
-- authdaemon としては PAM, MySQL, PostgreSQL などが動作している
-- メールエンジンとしては pop3 と imap4 が起動している (SSL はまだ起動させていない)
Jan 3 14:05:12 power authdaemond: modules="authuserdb authpam authldap authcustom", daemons=5
Jan 3 14:05:12 power authdaemond: Installing libauthuserdb
Jan 3 14:05:12 power authdaemond: Installation complete: authuserdb
Jan 3 14:05:12 power authdaemond: Installing libauthpam
Jan 3 14:05:12 power authdaemond: Installation complete: authpam
Jan 3 14:05:12 power authdaemond: Installing libauthldap
Jan 3 14:05:12 power authdaemond: Installation complete: authldap
Jan 3 14:05:12 power authdaemond: Installing libauthcustom
Jan 3 14:05:12 power authdaemond: Installation complete: authcustom
-- netstat -an --tcp を見ると、必要なポート (pop:110, imap:143
) は LISTEN になっている
[root@power root]# netstat -an --tcp | grep -e 110 -e 143
tcp 0 0 :::110 :::* LISTEN
tcp 0 0 :::143 :::* LISTEN
- ''COLOR(RED){しかし、メールサーバーへの接続を行うとエラーになってしまう}''
Jan 3 14:06:40 power imapd: Connection, ip=[::ffff:192.168.1.17]
Jan 3 14:06:47 power imapd: authdaemon: s_connect() failed: No such file or directory
Jan 3 14:06:47 power imapd: LOGIN FAILED, user=munakata, ip=[::ffff:192.168.1.17]
Jan 3 14:06:47 power imapd: authentication error: No such file or directory
Jan 3 14:07:02 power imapd: Connection, ip=[::ffff:192.168.1.17]
Jan 3 14:07:02 power imapd: authdaemon: s_connect() failed: No such file or directory
Jan 3 14:07:02 power imapd: LOGIN FAILED, user=munakata, ip=[::ffff:192.168.1.17]
Jan 3 14:07:02 power imapd: authentication error: No such file or directory
*** courier-authdaemon の不具合の原因解析 [#b559e802]
- [[このページ>http://www.infocopter.com/know-how/courier-imap/debugging.html]] を参考にして、authdaemon の動きを研究してみよう
-- /usr/lib/courier-imap/etc/pop3d に DEBUG_LOGIN=2 を追加した
-- /etc/syslog.conf に以下の行を追加し、ファイルを作成した ( touch /var/log/debug )
*.debug /var/log/debug
-- killall -1 syslogd を実行して syslog を再起動した
-- courier-IMAP と courier-Authdaemon を再起動した
-- telnet xxxx 110 で pop3 にアクセスした
- /var/log/debug に pop3d のデバッグメッセージを出してみた
Jan 3 16:26:53 power syslogd 1.4.1: restart.
Jan 3 16:27:19 power htt_server[2263]: Client shut down the connection owned by im_id(1).
Jan 3 16:27:19 power htt_server[2263]: status has not been enabled yet. (1, 1)
Jan 3 16:27:24 power userhelper[3163]: pam_timestamp: updated timestamp file `/var/run/sudo/root/unknown'
Jan 3 16:27:24 power userhelper[3164]: running '/usr/sbin/system-config-services' with root privileges on behalf of 'root'
Jan 3 16:27:31 power authdaemond: stopping authdaemond children
Jan 3 16:27:33 power authdaemond: modules="authuserdb authpam authldap authcustom", daemons=5
Jan 3 16:27:33 power authdaemond: Installing libauthuserdb
Jan 3 16:27:33 power authdaemond: Installation complete: authuserdb
Jan 3 16:27:33 power authdaemond: Installing libauthpam
Jan 3 16:27:33 power authdaemond: Installation complete: authpam
Jan 3 16:27:33 power authdaemond: Installing libauthldap
Jan 3 16:27:33 power authdaemond: Installation complete: authldap
Jan 3 16:27:33 power authdaemond: Installing libauthcustom
Jan 3 16:27:33 power authdaemond: Installation complete: authcustom
Jan 3 16:27:41 power htt_server[2263]: status has not been enabled yet. (1, 1)
Jan 3 16:27:44 power htt_server[2263]: status has not been enabled yet. (1, 1)
Jan 3 16:27:55 power pop3d: Connection, ip=[::ffff:192.168.1.17]
Jan 3 16:28:04 power pop3d: LOGIN: ip=[::ffff:192.168.1.17], command=USER
Jan 3 16:28:10 power pop3d: LOGIN: ip=[::ffff:192.168.1.17], command=PASS
Jan 3 16:28:10 power pop3d: LOGIN: ip=[::ffff:192.168.1.17], username=munakata
Jan 3 16:28:10 power pop3d: LOGIN: ip=[::ffff:192.168.1.17], password=freedman
Jan 3 16:28:10 power pop3d: authdaemon: s_connect() failed: No such file or directory
Jan 3 16:28:10 power pop3d: LOGIN FAILED, user=munakata, ip=[::ffff:192.168.1.17]
Jan 3 16:28:10 power pop3d: authentication error: No such file or directory
Jan 3 16:28:14 power htt_server[2263]: status has not been enabled yet. (1, 1)
- これでは、/var/log/maillog の情報とあまり変わらない、何かファイルが無いらしい
+ 関連のありそうなファイルを探してみた。
++ /var/spool/authdaemon
++ /usr/sbin/authdaemond <---- daemon startup script
++ /usr/src/debug/courier-authlib-0.52/authdaemon.c <<<< デバッグ関連
++ ''COLOR(RED){/usr/src/debug/courier-authlib-0.52/authdaemonlib.c}'' <<<<
++ /usr/src/debug/courier-authlib-0.52/authdaemond.c <<<<
++ /usr/lib/debug/usr/libexec/courier-authlib/authdaemond.debug <<<<
++ /usr/libexec/courier-authlib/authdaemond
++ /usr/local/sbin/authdaemond
++ /usr/local/var/spool/authdaemon
++ /usr/local/libexec/courier-authlib/authdaemond
++ /usr/local/etc/authlib/authdaemonrc <-------- 設定ファイル(自動生成された)
++ /usr/local/etc/authlib/authdaemonrc.dist <----- 自動生成のもと
- 関連しそうなファイル (上記の赤いソース) の中の問題の原因と思われる関数
static int opensock()
{
int s=socket(PF_UNIX, SOCK_STREAM, 0);
struct sockaddr_un skun;
skun.sun_family=AF_UNIX;
strcpy(skun.sun_path, AUTHDAEMONSOCK);
if (s < 0)
{
perror("CRIT: authdaemon: socket() failed");
return (-1);
}
if (s_connect(s, (const struct sockaddr *)&skun, sizeof(skun),TIMEOUT))
{
perror("ERR: authdaemon: s_connect() failed"); <<<==== ここに来ているのでは?
if (errno == ETIMEDOUT || errno == ECONNREFUSED)
fprintf(stderr, "ERR: [Hint: perhaps authdaemond is not running?]\n");
close(s);
return (-1);
}
return (s);
}
- 上の場所だとすると、ソケットが開けないのが原因のようだ
----
* FAQ [#j600c36f]
*** 添付ファイルがなくなる問題 [#q07bb915]
- OutLook 2003 から送信したメールに添付したメールが無くなる問題が発生
- 解析したところ 添付ファイルが MIME が解釈できない winmail.dat という
ファイルになって添付されていることがわかった
- この添付ファイルは OutLook でしか展開できないもの
- これを防ぐには OutLook で送信時に リッチテキスト を利用を無効にする
- 参照情報 ⇒ http://support.microsoft.com/default.aspx?scid=kb;en-us;278061
----
//
// 失敗の記録
//
* 失敗の記録 [#kf31844a]
** MUA の導入1:Dovecot [#m3e6ff2b]
- 従来 courier-IMAP で POP3、IMAP を SSL 対応で運用していたが、FC2 に標準でバンドルされている Devocot でも同様の運用ができそう。
- Dovecot を試験的に導入した結果、''COLOR(RED){root アカウントでは使えないように意図的に設定されている}'' ことがわかった。
-- /etc/dovecot.conf の中の記述
# Valid UID range for users, defaults to 500 and above. This is mostly
# to make sure that users can't log in as daemons or other system users.
# Note that denying root logins is hardcoded to dovecot binary and can't
# be done even if first_valid_uid is set to 0.
#first_valid_uid = 500
#last_valid_uid = 0
-- 実際にアクセスした時の /var/log/maillog のエラー
Jan 1 21:02:38 power dovecot: Logins with UID 0 not permitted (user root)
Jan 1 21:02:38 power pop3-login: Internal login failure: root [192.168.1.17]
*** Devcot の標準導入を行う。 [#g5b517c4]
- 設定ファイル /etc/dovecot.conf の編集
-- imap, imaps, pop, pops を有効にする (外部からは SSL アクセスしか通らないので SSL 対応は必須 )
# muna enables All
protocols = imap imaps pop3 pop3s
-- SSL を有効にする
# Disable SSL/TLS support.
#ssl_disable = no
# muna enables SSL
ssl_disable = no
-- サーバー証明書の場所の指定
--- サーバー証明書は [[SSL>[[Fedra2SSL]]]] のページで作成したものを利用する
# muna defines certs file create by own (an-autjrozed) CA
ssl_cert_file = /usr/local/certs/webmail_server.crt
ssl_key_file = /usr/local/certs/webmail.pem
- 編集した 2005-1-1 時点の dovecot.conf (但し web-mail が正常に動作していない) → &ref(dovecot.conf);
*** どうも様子がおかしい [#mdf0a5f8]
-- 基本的には SSL で IMAP4 で SMTP-Auth でのセッションが成立してメールも読み書き送受信ができる....が、
-- 時々 タイムアウトエラーがクライアント(Outlook 2003) 上に出る
-- /var/log/maillog を見ると
Jan 2 15:12:51 power imap-login: Login: munakata [192.168.1.12]
Jan 2 15:22:32 power dovecot: child 18512 (imap) killed with signal 11
Jan 2 15:22:42 power imap-login: Login: munakata [192.168.1.12]
Jan 2 15:22:44 power dovecot: child 18556 (imap) killed with signal 11
Jan 2 15:22:48 power imap-login: Login: munakata [192.168.1.12]
Jan 2 15:24:04 power dovecot: child 18558 (imap) killed with signal 11
Jan 2 15:24:07 power imap-login: Login: munakata [192.168.1.12]
Jan 2 15:24:07 power dovecot: child 18561 (imap) killed with signal 11
Jan 2 15:24:28 power imap-login: Login: munakata [192.168.1.12]
Jan 2 15:24:28 power imap-login: Login: munakata [192.168.1.12]
Jan 2 15:42:35 power imap-login: Login: munakata [192.168.1.17]
Jan 2 15:42:52 power last message repeated 4 times
Jan 2 15:43:02 power dovecot: child 18698 (imap) killed with signal 11
- 明らかに、dovect から何度も切断されて再接続をしている様子が見える、おかしい
- /Maildir のロックに絡んだ場所に問題があるのかもしれない
- homepage を見ると ''COLOR(RED){まだ色々デバッグを行っている途上の様なので、深追いはやめる}'' ことにする。
** courier-IMAP 失敗手順の記録 (これをやってはだめ) [#heace06d]
*** 問題発生 --- 例によってパッケージが足りない [#td5cf0d9]
- rpmbuild で RPM を作成しようと試みたが、例によってエラーが出た
[server_admin@power courier-imap-4.0.0]$ rpmbuild -ba courier-imap.spec
エラー: Failed build dependencies:
courier-authlib-devel is needed by courier-imap-4.0.0-1.2
openldap-servers is needed by courier-imap-4.0.0-1.2
- su コマンドで root になって yum で必要なファイルをインストールしてみる
-- root にならないと yum でインストールできない
[server_admin@power courier-imap-4.0.0]$ su
Password:
[root@power courier-imap-4.0.0]#
-- openladp-servers は yum でインストールできた
[root@power courier-imap-4.0.0]# yum install openldap-servers
Gathering header information file(s) from server(s)
Server: Fedora Core 2 - i386 - Base
Server: Fedora Core 2 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Resolving dependencies
Dependencies resolved
I will do the following:
[install: openldap-servers 2.1.29-1.i386]
Is this ok [y/N]: y
Downloading Packages
Getting openldap-servers-2.1.29-1.i386.rpm
openldap-servers-2.1.29-1 100% |=========================| 3.6 MB 00:12
Running test transaction:
Test transaction complete, Success!
openldap-servers 100 % done 1/1
Installed: openldap-servers 2.1.29-1.i386
Transaction(s) Complete
[root@power courier-imap-4.0.0]#
-- しかし courier-authlib-devel は yum では見つけられなかった (まだ新しいのか?)
[root@power courier-imap-4.0.0]# yum install courier-authlib-devel
Gathering header information file(s) from server(s)
Server: Fedora Core 2 - i386 - Base
Server: Fedora Core 2 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Cannot find a package matching courier-authlib-devel
No actions to take
-- [[courier の開発サイトの Download page :http://www.courier-mta.org/?download.php~imap]] にあることがわかった
-- Download して設定をおこなう
-- root から一般ユーザに戻って、server_admin のホームにダウンロード
[server_admin@power server_admin]$ tar -jxf courier-authlib-0.52.tar.bz2
[server_admin@power server_admin]$ cd courier-authlib-0.52
[server_admin@power courier-authlib-0.52]$ cat INSTALL
-- &ref(INSTALL); の中身を読むと 一般的には下記の手順でインストールせよと書いてある
./configure [options] [variable=value]*...
make
make install
make install-migrate
make install-configure
-- これは以前見たことがある → [[昔のページ>Home_mail]] を参照したが、肝心な情報(=configure の指定) が書いてない、残念!
The 'make install-migrate' command imports the authentication
configuration from earlier versions of these packages. 'make
install-migrate' is not needed otherwise.
-- と書いてあるので 上記の unstall-migrate は今回は不要だろう (やらない)
-- ./configure を実行したら、最後に以下のワーニングが出た。 曰く、Fedra なら RPM 使った方が簡単だよ... とのこと。
configure: WARNING: === I think you are trying to run this configure script
configure: WARNING: === on Red Hat/Fedora. You're doing too much work!
configure: WARNING: === It's much faster to create installable binary RPMs
configure: WARNING: === like this: http://www.courier-mta.org/FAQ.html#rpm
configure: WARNING: === When you do this you may find that RPM will tell you
configure: WARNING: === to install some other software first, before trying to
configure: WARNING: === build this one, and even tell you the name of RPMs you
configure: WARNING: === need to install from the distribution CD. That's much
configure: WARNING: === easier than trying to figure out the same from some
configure: WARNING: === cryptic error message.
configure: WARNING:
configure: WARNING: === Even if you don't intend to use everything you need to
configure: WARNING: === have in order to build via RPM, you should still do as
configure: WARNING: === you're told. All the extra stuff (LDAP, SQL, etc...)
configure: WARNING: === goes into RPM sub-packages, which do not need to be
configure: WARNING: === installed.
configure: WARNING: === But, if you insist, you can simply add '--with-redhat'
configure: WARNING: === parameter to this configure script and not see this
configure: WARNING: === error message. You should also do this when upgrading
configure: WARNING: === and you didn't use RPM with the older version.
configure: error: ... in either case you better know what you're doing!
-- 改めて RPM を探すが、すぐに使えそうな物も見付からない (足りないものがあったり)
-- 上の親切なメッセージの最後にある -with-redhat を付けて 再度実行してみた
-- 以下のエラーがあるがとりあえず正常終了した。全体のログを添付 → &ref(config_log.txt);
[server_admin@power courier-authlib-0.52]$ cd courier-authlib-0.52
( 途中省略 : 詳細は添付ログ参照 )
checking for expect... no
configure: WARNING: -----------------------------------------------------
configure: WARNING: expect not found - will not be able to change passwds
configure: WARNING: in webmail
configure: WARNING: -----------------------------------------------------
checking for passwd... /usr/bin/passwd
( 途中省略 : 詳細は添付ログ参照 )
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
[server_admin@power courier-authlib-0.52]$
-- 引続き make, 更に su コマンドで root になって make-install と make install-configure を実行し、全て正常終了した。
--- make 時のログ → &ref(make_log.txt);
--- make install 時のログ → &ref(make_install_log.txt);
--- make install-configure 時のログ → &ref(make_install-configure_log.txt);
*** courier-IMAP 4.0.0 のインストールの続き [#ncd439e0]
- rpm の作成を再開する
[server_admin@power server_admin]$ cd rpm/SPECS/
[server_admin@power SPECS]$ rpmbuild -ba courier-imap.spec
エラー: Failed build dependencies:
courier-authlib-devel is needed by courier-imap-4.0.0-1.2
- しかし、上で苦労して courier-authlib 導入したのに、まだ エラーと言われる
- この際なので、--nodeps をつけて実行したら 膨大なログを出しながらとりあえず正常に終了までいった。
- ログファイル → &ref(courier-IMAP-rpm_log.txt);
[server_admin@power SPECS]$ rpmbuild -ba --nodeps courier-imap.spec
- su で root になって、作成した rpm を使ってインストールを行う
[server_admin@power SPECS]$ su
Password:
[root@power SPECS]# cd ../RPMS/i386/
[root@power i386]# ls -l
合計 420
-rw-rw-r-- 1 server_admin server_admin 421773 1月 2 20:03 courier-imap-4.0.0-1.2.i386.rpm
-rw-rw-r-- 1 server_admin server_admin 1457 1月 2 20:03 courier-imap-debuginfo-4.0.0-1.2.i386.rpm
*** やはり 依存関係でエラーが出てしまった [#c71e4da1]
[root@power i386]# rpm -ivh courier-imap-4.0.0-1.2.i386.rpm
エラー: Failed dependencies:
libcourierauth.so.0 is needed by courier-imap-4.0.0-1.2
libcourierauthsasl.so.0 is needed by courier-imap-4.0.0-1.2
[root@power i386]#
- find コマンドで必要とされる 2つのファイルを検索すると、既に正しくインストールされている。
- これは courier-authlib を rpm を使わずにインストールしたため、rpm が依存関係を正しく解決できていないと誤判定した結果
[root@power i386]# find / -name libcourierauth.so -print
/usr/local/lib/courier-authlib/libcourierauth.so
/home/server_admin/courier-authlib-0.52/.libs/libcourierauth.so
[root@power i386]# find / -name libcourierauthsasl.so -print
/usr/local/lib/courier-authlib/libcourierauthsasl.so
/home/server_admin/courier-authlib-0.52/.libs/libcourierauthsasl.so
- 例によって、--nodeps でインストールを強行する。
[root@power i386]# rpm -ivh --nodeps courier-imap-4.0.0-1.2.i386.rpm
Preparing... ########################################### [100%]
1:courier-imap ########################################### [100%]
[root@power i386]#
- めでたく正常にインストールが完了した ( nodeps だから当り前か )
----
*** courier-authlib の rpm 化の検討 [#q5757329]
- courier-authlib.spec を編集して 不要な (そして rebuild 時にエラーになる) mysql、postgre、expect 関係を無効にした
* procmail [#x2f50f09]
- http://www.jaist.ac.jp/~fjt/procmail.html
- http://www.cool-web.com/procsm1.html
- http://www.rcnp.osaka-u.ac.jp/Divisions/CN/computer/ibm/manual/procmail/setting_procmail
- http://www.club.kyutech.ac.jp/support/manual/procmail.html
- http://www.jp.redhat.com/manual/Doc72/RH-DOCS/rhl-rg-ja-7.2/s1-email-procmail.html
- http://laku19.adsl.netsonic.fi/era/procmail/links.html
** レシピの書き方 [#gfa541fe]
- ホームディレクトリに.procmailrc というファイルを置き、レシピを記述する事により設定を行います。
- 複数のレシピを記述することができ、一つのレシピは「:0」で始まり「:0」かファイル終端(EOF)で終わります。
- 行頭に "#"を記述することでコメントを記述することもできます。
- レシピには大別して3つの事を記述します。
-- フラグ : Procmailにメッセージを渡す方法を指定
-- 条件文 :処理を行うメッセージを特定
-- アクション :条件に該当した場合に行う処理
*** フラグ [#u994d42e]
フラグにはメッセージを処理する際のProcmailへのメッセージ(メール)の渡し方を記述します。フラグの記述には以下のものがあります。
|H| 記述が省略された場合の動作。メッセージのヘッダだけを条件文に渡し検査する。|
|B| メッセージの本文だけを条件文に渡し、検査する。|
|A| 同じブロックレベルに記述されたAや、aの用いられてないレシピが該当した場合にだけ検査する。|
|a| Aと同様だが、手前のレシピが正しく実行された場合にだけ検査する。|
|E| Aの逆。手前のレシピが実行されなかった場合にだけ検査する。 |
|e| aの逆。手前のレシピが失敗した場合に検査する。|
|h| アクション部にヘッダだけを渡す。|
|b| アクション部にメッセージの本文だけを渡す。|
|f| パイプをフィルタとみなす。つまり、前処理ができる。|
|c| メッセージのコピーを残す。これがなければ、元のメール加工してしまうため、次の処理の為に必要である。~ 転送する際にもコピーを残しておかなければメールは転送先にのみ残る。|
|w| 指定されたフィルタやプログラムが終了するまで待機し、処理に失敗した場合には検査を行わない。|
|W|wと同じだが、処理に失敗しても検査する。 |
|i|あらゆる書きこみエラーを無視して検査する。 |
|hb|なにも書かない場合の動作。アクション部にメッセージのヘッダと本体の両方を渡す。|
- フラグに続いてロックファイルを指定すると、あるメッセージに対して複数の処理が同時に行われないようにします。
- 指定の仕方はフラグの最後にスペースをつけて:[ロックファイル名]です。
- ロックファイル名は省略することができ、省略した場合は自動的につけられます。
:0 HBDhc :lock.txt
* ^HOGE
| tar zcf hoge.tar.gz
- lock.txt」があればそれをロックファイルとしてロックする。
- メールのヘッダ・本体を問わずある一行の行頭が「HOGE」で始まるメールを受信するとメッセージをコピーしながらヘッダ部分だけを圧縮する。
*** 条件文 [#w341f389]
- 条件文はフラグに続く、行頭が「*」で始まる行を指します。
- 条件は[[ 正規表現 >http://www.sixnine.net/regexp/index.html]]によって記述します。省略した場合は無条件でアクション部が実行されます。
- 複数の条件文を記述することも可能で、その場合は全ての条件を満たしている時にのみアクションが実行されます。
条件文の記述には以下のものがあります。
|!|条件の否定。条件を満たさなかった時に実行する。|
|$|条件文に現れる環境変数をシェルの様に評価する。|
|?|指定したプログラムの終了コードを利用する。(0:成功、1:失敗)|
|<|長さが後に記述されたバイト数(10進)以上であれば実行する。|
| >|長さが後に記述されたバイト数(10進)以下であれば実行する。|
|変数名 ??|指定された値と変数を比較する。|
| \|クォートする。\/と記述することで該当個所を変数MATCHに格納する。|
- 例
HOGE=HOGEHOGE
GA=GAGAGA
CHECK=yes
:0 B : ロックファイルは省略。メッセージ本体だけを検査。
* ! ^$HOGE 行頭に「$HOGE」という文字がない。(*のあとに$が書かれていないので)
* $ ^$GA 行頭に「GAGAGA」と書かれている。
* ? test -f $HOME/anti_hoge ホームディレクトリに「anti_hoge」というファイルがある。
* < 5000 メッセージ本文が5000バイト以下。
* > 4900 メッセージ本文が4900バイト以上。
* $CHECK ?? yes 変数「CHACK」が「yes」のメッセージを探す。
* ^ADDR *\/.* 「ADDR」に続く空白文字の後に記述された文字列を変数「MATCH」に格納。
| echo "$MATCH" >> anti_hoge 変数「MATCH」を「anti_hoge」に書き足す。
- 例2 ( server_admin のスパム検出ロジック asof 2006-8-13 )
# Only accept @[mail.]hmuna.com
:0H:
* ! ^From: .*@mail.hmuna.com
* ! ^From: .*@hmuna.com
#/dev/null
$MAILDIR/.INBOX.SPAM/cur
# Reject deception target mail
:0H:
* ^From: (support|sales|mail|root|postmaster|uucp)@hmuna.com
$MAILDIR/.INBOX.SPAM/cur
# Reject title less mail
:0H:
* ^Title:$
$MAILDIR/.INBOX.SPAM/cur
***アクション [#w8064771]
全ての条件を満たした場合に実行される内容を一行で記述する。
|!|指定されたアドレスに転送。スペースで区切る事により列挙可能。|
|||メッセージを他のプログラムに渡す。|
|{..}| メッセージにあたらしい条件文を付加したい時や、複数のアクションを実行したいときにカッコでくくる。 |
|ファイル名| メッセージをファイルに格納する。ロック指定を忘れずに。|
|ディレクトリ名 |メッセージにユニークなファイル名をつけてディレクトリに格納。|
|ディレクトリ名/.| メッセージをディレクトリに連番形式で格納。|
|/dev/null| メッセージを廃棄。復元不可。|
** public_mail の設定 ( /home/publicmail/.procmailrc ) [#c58a5c55]
・ 最新のレシピ ----> &ref(procmail_recipi.txt);
[root@power root]# cat /home/public_mail/.procmailrc
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
LOGFILE=$MAILDIR/procmaillog
LOCKFILE=$HOME/.lockmail
VERBOSE=ON
#
# spam assassin で SAPM を判定
#
:0 fw: spamassassin.lock
* < 256000
|/usr/bin/spamc
#
# SAPM メールの振り分け
#
# move [SPAM] marked mail to spam folder
:0
* ^Subject:.*SPAM
$MAILDIR/.spam/cur
# [SPAM] がなくてもレベルが1以はdoubtに移動
:0
* ^X-Spam-Level: [* ** *** ****]
$MAILDIR/.spam.doubt/
#
# SPAM 以外でも捨てるメールを指定
#
# delete キーマンズネット
:0
* ^From: .*news-keymans@mail.recruit.co.jp*
/dev/null
#
# Mailing List などの振り分け
#
# move CML
:0
* ^(To|Return-Path): .*@citroen*
$MAILDIR/.Message_saved.CML/
# move Cingular
:0
* ^From: .*@cingular-mail.com*
$MAILDIR/.Message_saved.cingular/
# move Nissen on-line
:0
* ^From: .*@nissen.co.jp*
$MAILDIR/.Message_saved.Shopping.Nissen/
# move Rakuten
:0
* ^From: .*rakuten.co.jp*
$MAILDIR/.Message_saved.Shopping.Rakuten/
# move Cecile
:0
* ^From: .*@cecile.co.jp
$MAILDIR/.Message_saved.Shopping.Cecile/
# move JustSystem
:0
* ^From: .*@justsystem.co.jp
$MAILDIR/.Message_saved.Shopping.JustSystem/
# move IBM
:0
* ^From: .*clubibm@*
$MAILDIR/.Message_saved.Shopping.IBM/
# move Tamamoya
:0
* ^From: .*tamamo@
$MAILDIR/.Message_saved.Shopping.Tamamo/
# move Nomura Securities
:0
* ^From: .*nomura@mail.nomura-trade*
$MAILDIR/.Message_saved.Nomura/
# Koizumi mail magazine
:0
* From: .*koizumi@mmz.kantei.go.jp*
$MAILDIR/.Message_saved.&XA9syTDhMPww6w-/