メール・サーバー関連のインストール手順
#navi(OpenBlockS)
OpenBlockS に Postfix をインストールして、メール・サーバーを運用する
**目次
#contents
**関連リンク
-[[ The Postfix Home Page:http://www.postfix.org/]] - 配布元
-[[Postfix のぺーじ:http://www.kobitosan.net/postfix/]] - 日本語のマニュアルやメーリングリストの案内
**Postfix Quick reference
:緊急停止|万が一 Postfix が spam を大量に送信していたり、ホストのリソースを異常に使用していることに気づいたら、postfix stop ではなく((stop では現在処理中のものは処理を続けてしまう)) abort を発行する。
sudo /sbin/service postfix abort
:queueの再処理|
sudo /sbin/service postfix flush
:aliasの変更|
cd /home/otsuka/sys/postfix
vi aliases
diff -c /etc/postfix/aliases aliases
sudo cp aliases /etc/postfix/
sudo newaliases
cp -p aliases aliases.`date +%Y%m%d`
:queue掃除|sudo /usr/sbin/postsuper -d '''Queue-ID'''
:main.cfの変更|
cd /home/otsuka/sys/postfix
vi main.cf
diff -c /etc/postfix/main.cf main.cf
sudo cp main.cf /etc/postfix/
sudo /sbin/service postfix reload
cp -p main.cf main.cf.`date +%Y%m%d`
:設定一覧を表示|
/usr/sbin/postconf -n
:転送|.forwardを書けばよいが、メールボックスに残しつつ転送する場合、
semdmailのような \user 形式は使えない。メール・フォルダを直接
指定すればよい。[[Postfix Q and A:http://www.kobitosan.net/postfix/QandA.html#4.1.5]]
**install
postfixというユーザーは、ssdlinuxに最初からあったので、これを流用することにした。
postdropというグループを作成。グループ番号は適当でよいが、最近のFedora Coreで
使われているものと合わせることにした。
groupadd -g 90 postdrop
適当なミラーサイトからダウンロード、署名を確認。
cd ~/src
tar xzvf ../01distfiles/postfix-2.1.5.tar.gz
cd postfix-2.1.5
make
予めssdlinuxのsendmailを退避
su -
cd /usr/bin
mv mailq mailq.dist
mv newaliases newaliases.dist
cd ../sbin
rm -i sendmail (qmail導入時に /var/qmail/bin/sendmail へのリンクになっている)
mv sendmail sednmail.dist (qmailを導入していない場合)
cd /home/otsuka/src/postfix-2.1.5
/bin/sh postfix-install
いろいろ聞いてくるが、全てデフォルトでよい。
install_rootを指定してローカル・パッケージを作ろうとしたが、
postfix-installのソースを見ると、install_rootを指定してある場合は、
/var/spool/postfixのchownやchmodの処理を
やってくれない((付属のPACKAGE_READMEや、http://www.kobitosan.net/postfix/readme/PACKAGE_README.jp にあるようにパッケージを解いてから post-install upgrade-package を実行するという手順になるようだ。))
ようなので、そのまま/へインストールすることにする。
/etc/postfix/aliasesを正しく設定する。
とりあえずqmailで使っていたサブアドレスは、aliasとして登録しておく。
/etc/postfix/main.cfを以下のように設定。
(プロバイダのsmtpサーバーを smtp.example.jpとする)
$ /usr/sbin/postconf -n
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/local/man
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = example.jp
myhostname = example.jp
mynetworks = 192.168.0.0/24, 127.0.0.0/8
mynetworks_style = subnet
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
recipient_delimiter = -
relay_domains = $mydestination
relayhost = [smtp.example.jp]
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
sudo /usr/sbin/postfix startで動き出したことを確認。
rootからotsukaにmailコマンドでローカル・メールが届くことを確認。
再起動時や電源投入時に自動でpostfixを起動するために
/usr/local/etc/rc.d/postfix を追加。内容は以下のようにする。
#!/bin/sh
case "$1" in
start)
# Start daemons.
/usr/sbin/postfix start
;;
stop)
# Stop daemons.
/usr/sbin/postfix stop
;;
*)
echo "Usage: S99postfix {start|stop}"
exit 1
esac
exit 0
**サブアドレスのフォルダ直接配信
qmailでできていたサブアドレスによるフォルダ直接配信ができなくなった。
ソースのツリー postfix-2.1.5/examples/qmail-local/qmail-local.txt
に、qmail-local をローカル配送エージェントとして使う方法(?)が
載っているようだか、意図がよく分からない。
#!/bin/sh
export PATH=$PATH:/usr/local/bin:/var/qmail/bin
tail +2 | seekablepipe qmail-local -- \
"$USER" "$HOME" "$LOCAL" "${EXTENSION:+-}" "$EXTENSION"
"$DOMAIN""$SENDER" ./Maildir/
e=$?
(($e == 111)) && exit 75
(($e == 100)) && exit 77
exit $e
これを /usr/local/libexec/postqmail-local として保存して、
main.cf の mailbox_command として使えということだろうか。
seekablepipe というコマンドは、[[conn-tools:http://www.skarnet.org/software/conn-tools/]]
の一部でインストールが結構めんどくさそうだ。
qmailのdaemonも動かし続けている必要があるため、
大掛かりになり過ぎるようだ。
aliases に otsuka-123: /home/otsuka/Maildir/.Junk/ というエントリを
加えて、otsuka-123@example.jp に出すとどうなるかやってみたら、
(maildir delivery failed: create
/home/otsuka/Maildir/.Junk/tmp/1106023024.P1317.minig: Permission denied)
というエラーでバウンスされてしまった。
aliasesにユーザーを指定しないときは、nobody で配送されるようだ。
Maildir の .Junk ディレクトリを go+rwx にしてみたが、だめなようだ。
aliases に Maildir を直接指定するのはあきらめて、
/etc/postmaster/main.cf に 'recipient_delimiter = -' をセットして $HOME/.forward-123に /home/otsuka/Maildir/.Junk/ と書いてみたら
うまくいったようだ。
拡張アドレスを使う場合、otsuka-abc@exmaple.jp などの未定義アドレスに
送っても通常の受信フォルダに届いてしまうようだ。.qmail-default のような
送っても通常の受信フォルダに届いてしまう。.qmail-default のような
未定義アドレスをどこに配送するかは指定できないようだ。
foo-123@exmaple.jp というアドレスを、otsuka の Junkフォルダで受けたいときは、
aliases に foo-123: otsuka-junk と書いておき、$HOME/.forward-junk に
/home/otsuka/Maildir/.Junk/ を書いておけばよい。
foo: otsuka-foo
foo-123: otsuka-junk
foo-456: otsuka-bbs
のように aliases に書いて目的別にアドレスを作ってから、
そのアドレスを相手に伝えれば、
漏洩元トレーサーの付いた自動振り分けメールボックスの出来上がりだ。
#include(免責事項)