Postfix と dovecot で。
Ubuntu-11.10-server-amd64 で確認。
このトピックは Ubuntu で DNS サーバー Ubuntu で LDAP サーバー の環境で動作するよう構成しています。
作成 2012.03.25
更新 2013.04.28
更新 2013.04.28
Ubuntu でメールサーバー
目次
構成
LDAP サーバーを参照して、SMTP サーバーとIMAP4 サーバーを構成する。
LDAP構成
ホスト名 | IP アドレス | 用途 |
dns | 192.168.0.102 | DNS サーバー 構築済み |
ldap | 192.168.0.103 | LDAP サーバー 構築済み |
192.168.0.104 | SMTP, IMAP4 サーバー |
パラメーター | 値 | その他 |
LDAP URI | ldap://192.168.0.103/ | |
BaseDN | dc=example,dc=com | |
LDAP version | 3 | |
Root DN | cn=admin,dc=example,dc=com | exadmin |
Bind DN | cn=proxy,dc=example,dc=com | prxpass |
サンプルユーザー | uid=user0001,ou=people,dc=example,dc=com | user0001 |
サンプルグループ | cn=ldapgrp,ou=group,dc=example,dc=com |
LDAP認証
今回は LDAP 認証を使用するが、PAM を参照する方式のため Postfix, dovecot の設定に影響しない。
LDAP の環境がない場合は、無視して構わない。
LDAP の環境がない場合は、無視して構わない。
インストールと設定
インストール中に設定画面が現れる。
ちなみに、質問中に出てくる ldaps は暗号化認証、ldapi は RPC 経由の認証で、今のところ UNIX Domain Socket しか使用できない。
設定に失敗した場合は、以下のコマンドでやり直せる。
なので nss テーブルを更新する。
$ sudo apt-get install ldap-utils ldap-auth-config今回は以下の構成
パラメーター | 値 | その他 |
LDAP URI | ldap://192.168.0.103/ | |
BaseDN | dc=example,dc=com | |
LDAP version | 3 | |
Make local root Database admin | Yes | |
Does the LDAP database require login? | Yes | |
LDAP account for root | cn=admin,dc=example,dc=com | exadmin |
Unprivileged database user | cn=proxy,dc=example,dc=com | prxpass |
設定に失敗した場合は、以下のコマンドでやり直せる。
$ sudo dpkg-reconfigure ldap-auth-configこの状態ではまだLDAP認証が設定されただけで、認証に使用するようになっていない。
なので nss テーブルを更新する。
$ sudo auth-client-config -t nss -p lac_ldap $ sudo pam-auth-update
確認
LDAP のアカウントが引けるか確認する。
LDAP が正常に参照できていたら、LDAP に登録したアカウントを一緒に表示される。
LDAP が正常に参照できていたら、LDAP に登録したアカウントを一緒に表示される。
$ getent passwdログインできるようにフォルダーを作成して、ログインしてみる。
$ sudo cp -a /etc/skel /home/user0001 $ sudo chown -R user0001:ldapgrp /home/user0001 $ su - user0001 パスワード:
SMTP
インストール
Postfix をインストールする。
$ sudo apt-get install mailutils postfixインストール中の質問は以下の設定で。説明がひどすぎる上、どの選択肢でも設定ファイルを書き換える必要がある。
項目 | 設定 |
メール設定の一般形式 | インターネットサイト |
システムメール名 | example.com |
設定
/etc/postfix/main.cf 抜粋
myhostname = mail.example.com mydestination = example.com, mail.example.com, localhost.localdomain, localhost mynetworks = 192.168.0.0/24 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 inet_interfaces = all home_mailbox = Maildir/
再起動
細かい設定は reload で。ポート番号が変わるような変更は restart で。
sudo service postfix restart
動作確認
ローカルからメール送信
メールコマンドを使用
$ mail user0001@example.com Cc: Subject: Test From Mail Server TEST 12:52 (Ctrl+dで終了) $ su - user0001user0001 のフォルダの Maildir/new/ 配下にメールデータが配送されていたら成功。
IMAP
インストール
$ sudo apt-get install dovecot-imapd
設定
/etc/dovecot/dovecot.conf 変更部分のみ
/etc/dovecot/conf.d/10-mail.conf 変更部分のみ
#login_trusted_networks = login_trusted_networks = 192.168.0.0/24この設定により、192.168.0.0/24 のネットワークのクライアントは平文のパスワードが使用可能になる。
/etc/dovecot/conf.d/10-mail.conf 変更部分のみ
mail_location = maildir:~/Maildir # mail_location = mbox:~/mail:INBOX=/var/mail/%u
サービス起動
$ sudo service dovecot startTCP/143 と TCP/993 が起動する。
証明書に関する記述は /etc/dovecot/conf.d/10-ssl.conf を設定する。
一度でもメールが届いたことがないと認証エラーになります。
Postfix は配送しようとしたユーザーディレクトリに Maildir が無いと自動作成します。Dovecot は ~/Maildir/new, ~/Maildir/cur, ~/Maildir/tmp ディレクトリが無いと認証エラーになります。
結果的に、メールが届いたことがないと IMAP が認証エラーになるというわけです。
dovecot-ldap をインストールした場合
/etc/dovecot/dovecot-ldap.conf.ext を設定しないと起動しなくなる。
hosts = 192.168.0.103:389 dn = cn=proxy,dc=example,dc=com dnpass = prxpass sasl_bind = no auth_bind_userdn = uid=%u,ou=people,dc=example,dc=com base = dc=example,dc=com scope = subtree user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid default_pass_scheme = SSHA
ログ
ログは /var/log/mail.log と /var/log/mail.err へ記録される。