Debian(lenny)にてPostfix+dovecot+SMTP-Authの設定
Postfixとdovecotを使って、バーチャルドメインとバーチャルエイリアスに対応させる方法。
o 利用ドメイン 13nightcrows.org
o ヴァーチャルユーザアカウント hogehoge@13nightcrows.org
( いないんだからメール送らないでね!絶対にいないんだからね! )
このサーバ自体がDebianでできているので
まずは必要なパッケージをインストール
# apt-get install postfix
# apt-get install dovecot-common dovecot-pop3d
的な感じでインストールします。
Debianだとsendmailとかexim4とかが入っているので、
その辺は適時によろしくです。
o 1, dovecotの設定
- /etc/dovecot/dovecot.conf ( /etc/dovecot.conf )
### この辺は詳細にログを出力する設定ね。
### ログいらねーっていう人はnoとかでよいかと。
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
log_path = /var/log/dovecot.log
log_timestamp = "%Y-%m-%d %H:%M:%S"
### POP3で起動しますよー。PLAINの認証はしませんよーという宣言
protocols = pop3
disable_plaintext_auth = no
### Maildir形式で受信。mboxタイプ使っている人最近見ないよね。
mail_location = maildir:~/Maildir
### UIDのフォーマットね。なんでこれで設定したんだっけ。。。
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
### 認証の設定
auth default {
mechanisms = cram-md5 plain
passdb passwd-file {
args = /etc/dovecot/passwd
}
### パスワードのファイルはこれですよー。
### 認証形式はCRAM-MD5かPLAINでやりますよー
### という宣言。PLAIN使わないって言ったじゃんって。。
### これはね、telnetする時にね。色々とね。。userdb passwd-file {
args = /etc/dovecot/passwd
}
### お、おい。。マジかよあんた。。。
### ユーザDBとパスワードファイルを一緒になんて。。
### ZEIJAKUだろって。。socket listen {
client {
path = /var/spool/postfix/private/auth-dovecot
mode = 0660
user = postfix
group = postfix
### で、SMTP-Authするよーって宣言。
### 認証情報は上のやつ使うよー。
}
}
}
で、dovecot.confの設定は完了。シンプルでいいねー。好きよ。
さっきpasswdとuserdbで利用するファイルの中身を
# dovecotpw -lCRYPT MD5 MD5-CRYPT SHA SHA1 SMD5 SSHA PLAIN
CLEARTEXT CRAM-MD5 HMAC-MD5 DIGEST-MD5 PLAIN-MD4
PLAIN-MD5 LDAP-MD5 LANMAN NTLM RPA
まぁ色々とございますが
# dovecotpw -s CRAM-MD5
Enter new password:
Retype new password:
{CRAM-MD5}dcbe8064d829ee98ad16817611150a6c7ee5fe1c9dfd79f5395be892f162bfd3
こんな感じでCRAM-MD5でパスワードさくせいしますよと。
ちなみに上のはパスワードをhogehogeって打った例です。
んで、パスワードファイルに色々記述するんだけど
その前にdovecotユーザやらディレクトリとか掘ったりしなければならないのです。
o 2, dovecot用のユーザを作成
# useradd -u 10000 -s /bin/false vmailmgr
かっこいいー。vmailmgr。ヴァーチャルメールマネージャー!!
ユーザIDは被らなければ何番でも大丈夫。
んで、ヴァーチャルドメイン用のディレクトリを掘ります。
# mkdir /home/dovecot
ので
# mkdir /home/dovecot/13nightcrows.org
で、最初に書いたように、今回はまんま 13nightcrows.org を利用します。
掘っちゃいますね。掘る掘るってなんだか芋掘りみたいだね。
# mkdir /home/dovecot/13nightcrows.org/hogehoge
もうここまで掘っちゃいましょうかね。
# chown -R vmailmgr.vmailmgr /home/dovecot
# ls -lRa /home/dovecot
オーナーを変更します。これでハコモノは完了。
次にパスワードファイルを作成します。
# vi /etc/dovecot/passwd
hogehoge@13nightcrows.org:{CRAM-MD5}dcbe8064d829ee98ad16817611150a6c7ee5fe1c9dfd79f5395be892f162bfd3:10000:100000::/home/dovecot/13nightcrows.org/hogehoge/::/sbin/nologin
# chmod 600 /etc/dovecot/passwd
このように、先ほど作成したCRAM-MD5のパスワードをこんな感じで設定します。
この情報を参考にdovecot君は認証したりメールボックス見に行ったりするので
間違えないようにね。
パーミッション減らしてもあんまり意味ないかもだけど
情報が情報だけに減らしておいて損はないよね、きっと。 以上がdovecotの設定!
# /etc/init.d/dovecot start
なんか打ってみてエラーが出たらログファイル!
エラーが出なかったらおめでとう! さて、次はPostfixさんの設定です。
o 3, Postfixの設定
- /etc/postfix/main.cf
myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP
disable_vrfy_command = yes
smtpd_helo_required = yes
biff = no
myhostname = 13mail.local
append_dot_mydomain = no
readme_directory = no
mydomain = 13nightcrows.local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
inet_interfaces = all
mydestination = localhost
unknown_local_recipient_reject_code = 550
unknown_local_recipient_reject_code = 550
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
home_mailbox = Maildir/
relayhost =
mynetworks = host
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all### SMTP
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth-dovecot
smtpd_sasl_authenticated_header = yes### virtual
virtual_mailbox_domains = 13nightcrows.org
virtual_mailbox_base = /home/dovecot
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000
細かいことは抜かしまーす。
気をつけなきゃいけないところを列挙します。
mydomain
- > 適当な名前をふる。フルドメインが入っていなければなんでもおけ
alias_maps = hash:/etc/aliases
- > デフォルトさんで
alias_database = hash:/etc/aliases
- > デフォルトさんで
myorigin
- > 適当な感じ
home_mailbox
- > さっき設定したdovecotと合わせる
virtual_mailbox_domains
virtual_mailbox_base
virtual_mailbox_maps
virtual_alias_maps
- > これは純粋なエイリアスファイル。内容は後述
virtual_uid_maps
- > dovecot用ユーザのUID
この設定にちびっとでも差異があると、全くどうして動いてくれないの。。。
なので上手く動かないとかがあったら、この辺を確認してあげてください。
o 4, 各バーチャルファイルの設定
- virtual_mailbox_maps (/etc/postfix/vmailbox)
バーチャルメールボックスの設定。
hogehoge@13nightcrows.org 13nightcrows.org/hogehoge/Maildir/
virtual_mailbox_baseにて設定したファイルパスから下を書くの。
つまりvirtual_mailbox_base で /home/dovecot と設定しているので、
その下の 13nightcrows.org/hogehoge/Maildir/を書いてあげる。
そうすると hogehoge@13nightcrows.org のアカウントのメールボックスは
/home/dovecot/13nightcrows.org/hogehoge/Maildir/ ですよ。
という意味になります。
そしてその設定を反映するために
# postmap /etc/postfix/vmailbox
これで設定が読み込まれます。
念のため、vmailboxと同じディレクトリに
vmailbox.dbファイルができたか 確認しておくとなおよしですね。
実はそっちが参照されている実ファイルなので。
- virtual_alias_maps(/etc/postfix/virtual)
ヴァーチャルエイリアスは今回では使用しないので
# touch /etc/postfix/virtual # postmap /etc/postfix/virtual
# strings /etc/postfix/virtual
とかなんとかで空ファイルをつくってよみこませます。
ファイルがないとおこられるので仕方なし。 このエイリアスファイルは次の回で使用する予定。
んでは、いよいよです。
# postfix check # postfix start
で、動かしてみて!
動かなかったりしたら
- /var/log/mail.(info,warn,err)
に何が悪いのかが出てくるからそいつらをつぶす!
# postconf -nなどで設定内容を確認しながらやるとジョージ・ベストさん!
動いたらおめでとうございます!
あとは適当なMTAで設定してみてください。Thunderbirdを例にあげると
[保護された認証]にチェックボックスを入れないと認証でつまずいてしまうまう。
そして、見事MTAでメールの送受信ができたら完了です!
- 内部 to 外部
- 外部 to 内部
- 内部 to 内部
これらを全て問題なく送受信できたら ミッションコンプリートです!
おめでとうございます!
念のため不正中継テストを実施しちゃえばなおよろしですな。
三者中継チェック - RBL.JP
以上、おつかれさまでした!!!