メール・サーバー関連のインストール手順
OpenBlockS に Postfix をインストールして、メール・サーバーを運用する
目次
関連リンク
- The Postfix Home Page - 配布元
- 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