メール・サーバー関連のインストール手順


OpenBlockS に Postfix をインストールして、メール・サーバーを運用する

目次

関連リンク

Postfix Quick reference

緊急停止
万が一 Postfix が spam を大量に送信していたり、ホストのリソースを異常に使用していることに気づいたら、postfix stop ではなく*1 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

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の処理を やってくれない*2 ようなので、そのまま/へインストールすることにする。

/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 の一部でインストールが結構めんどくさそうだ。 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 のような 未定義アドレスをどこに配送するかは指定できないようだ。

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 に書いて目的別にアドレスを作ってから、 そのアドレスを相手に伝えれば、 漏洩元トレーサーの付いた自動振り分けメールボックスの出来上がりだ。

免責事項

ここに記載されている内容を実際に運用した場合のトラブルに関しては一切責任を負えませんのでご了承ください。
Copyright 2000-2011 Koichi Otsuka


*1 stop では現在処理中のものは処理を続けてしまう
*2 付属のPACKAGE_READMEや、http://www.kobitosan.net/postfix/readme/PACKAGE_README.jp にあるようにパッケージを解いてから post-install upgrade-package を実行するという手順になるようだ。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-01-18 (火) 14:40:12 (7010d)