24.5.09

Ubuntu 8.04 LTS Server でメールサーバを構築する Session 3

■メールサーバをインストール
$sudo aptitude install postfix-mysql dovecot-pop3d dovecot-imapd sasl2-bin php5-imap
→Postfixの設定を訊かれるので、「インターネットサイト」を選択

○メール保存ディレクトリのユーザを作成
$sudo useradd -s /bin/false -m vmail
→/etc/passwdからvmailユーザのuidとgidを確認(今回は1001)
$cd /usr/local/src/

○Postfix Adminをダウンロード(最新版のURLはPostfix Adminのウェブサイトで確認)
$sudo wget http://nchc.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin-2.2.1.1-all.deb

○Postfix Adminをインストール
$sudo dpkg -i postfixadmin-2.2.1.1-all.deb
$sudo apache2ctl configtest
$sudo /etc/init.d/apache2 force-reload

○Postfix Adminの表示確認
「http://192.168.0.10/postfixadmin/」にブラウザでアクセスし、表示を確認(この時点では何も操作しない)

○MySQLにユーザとデータベースを作成
$mysql -u root -p
→MySQLのrootパスワードを入力し、以下のSQLクエリを投入
>CREATE DATABASE postfix;
>CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfixユーザのパスワード';
>GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
>FLUSH PRIVILEGES;
>QUIT;


○Postfix Adminを設定
$sudo vim /etc/postfixadmin/config.inc.php
→以下の内容を追加・変更
$CONF['postfix_admin_url'] = 'http://example.com/postfixadmin';
$CONF['default_language'] = 'ja';
$CONF['database_password'] = 'postfixユーザのパスワード';
$CONF['admin_email'] = 'postmaster@example.com';
$CONF['page_size'] = '25';
$CONF['default_aliases'] = array(
    'postmaster' => 'postmaster@example.com',
    'webmaster' => 'webmaster@example.com'
);
$CONF['domain_path'] = 'YES';
$CONF['doman_in_mailbox'] = 'NO';
$CONF['aliases'] = '100';
$CONF['mailboxes'] = '100';
$CONF['maxquota'] = '50';
$CONF['quota'] = 'YES';
$CONF['quota_multiplier'] = '1048576';
$CONF['alias_control'] = 'YES';
$CONF['alias_control_admin'] = 'YES';
$CONF['backup'] = 'NO';
$CONF['sendmail'] = 'NO';
$CONF['fetchmail'] = 'NO';
$CONF['user_footer_link'] = "http://example.com/postfixadmin/users/main.php";
$CONF['show_footer_text'] = 'NO';

Postfix Adminにアクセスして環境のセットアップが完了したことを確認し、表示に従って特権管理者アカウントを作成

○不要になったPostfix Adminのセットアップスクリプトを削除
$sudo rm /usr/share/postfixadmin/setup.php

○Postfix Adminの動作確認
再度Postfix Adminにアクセスして特権管理者でログインできることを確認(ログイン以外の操作はしない)

○Postfixを設定
$sudo vim /etc/postfix/main.cf
→以下の内容を追加・変更
smtpd_banner = $myhostname ESMTP $mail_name
inet_interfaces = all
mydestination = $myhostname, localhost
mynetworks = グローバル側ネットワークアドレス/サブネットマスク, 127.0.0.0/8
relayhost =
recipient_delimiter = +
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
local_transport = virtual
home_mailbox = Maildir/
message_size_limit = 20971520
mailbox_size_limit = 52428800

# Virtual parameters
relay_domains = proxy:mysql:${config_directory}/mysql_relay_domains_maps.cf
virtual_transport = virtual
virtual_alias_maps = proxy:mysql:${config_directory}/mysql_virtual_alias_maps.cf
virtual_alias_domains = $virtual_alias_maps
virtual_mailbox_maps = proxy:mysql:${config_directory}/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = proxy:mysql:${config_directory}/mysql_virtual_domains_maps.cf
virtual_mailbox_limit_maps = proxy:mysql:${config_directory}/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit = 52428800
virtual_mailbox_limit_override = yes
virtual_mailbox_base = /home/vmail
virtual_mailbox_extended = yes
virtual_minimum_uid = 1001
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001
virtual_create_maildirsize = yes
virtual_maildir_limit_message = The mailbox exceeded it's quota. Please try again later.
virtual_overquota_bounce = yes

# SASL parameters
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination
broken_sasl_auth_clients = yes

$sudo vim /etc/postfix/master.cf
→以下の内容を変更
submission inet n - - - - smtpd
    -o smtpd_sasl_auth_enable=yes
smtps inet n - - - - smtpd
    -o smtpd_tls_wrappermode=yes
    -o smtpd_sasl_auth_enable=yes

$sudo vim /etc/postfix/mysql_relay_domains_maps.cf
→以下の内容を記述
user = postfix
password = postfixユーザのパスワード
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '1'

$sudo vim /etc/postfix/mysql_virtual_alias_maps.cf
→以下の内容を記述
user = postfix
password = postfixユーザのパスワード
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address

$sudo vim /etc/postfix/mysql_virtual_domains_maps.cf
→以下の内容を記述
user = postfix
password = postfixユーザのパスワード
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'

$sudo vim /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
→以下の内容を記述
user = postfix
password = postfixユーザのパスワード
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
additional_conditions = and active = '1'

$sudo vim /etc/postfix/mysql_virtual_mailbox_maps.cf
→以下の内容を記述
user = postfix
password = postfixユーザのパスワード
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username

$sudo chgrp postfix /etc/postfix/mysql_*
$sudo chmod 640 /etc/postfix/mysql_*

○saslauthdを設定
$sudo vim /etc/default/saslauthd
→以下の内容を変更
START=yes
MECHANISMS="rimap"
MECH_OPTIONS="localhost"
OPTIONS="-r -c -m /var/spool/postfix/var/run/saslauthd"

$sudo /etc/init.d/saslauthd restart
→/var/spool/postfix/var/run/saslauthd ディレクトリが作成されたことを確認

○Postfixのchroot環境に合わせてsaslauthdのディレクトリを移動
$sudo rm -r /var/run/saslauthd
$sudo ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
$sudo chmod 755 /var/spool/postfix/var/run/saslauthd/

○Postfixからsaslauthdを利用する設定を追加
$sudo vim /etc/postfix/sasl/smtpd.conf
→以下の内容を記述
pwcheck_method: saslauthd
saslauthd_path: /var/run/saslauthd/mux
mech_list: cram-md5 digest-md5 plain login
log_level: 3


○Dovecotを設定
$sudo vim /etc/dovecot/dovecot.conf
→以下の内容を変更
disable_plaintext_auth = no

login_chroot = yes
login_user = dovecot
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
ssl_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
mail_location = maildir:/home/vmail/%d/%n

auth default {
    mechanisms = cram-md5 digest-md5 plain login
    #passdb pam {
    #}
    #passdb passwd {
    #}
    passdb sql {
        args = /etc/dovecot/dovecot-sql.conf
    }
    #userdb passwd {
    #}
    userdb sql {
        args = /etc/dovecot/dovecot-sql.conf
    }
}

$sudo vim /etc/dovecot/dovecot-sql.conf
→以下の内容を変更
driver = mysql
connect = host=localhost port=3306 user=postfix password=postfixユーザのパスワード dbname=postfix
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT concat('/home/vmail/', maildir) as home, 1001 as uid, 1001 as gid FROM mailbox WHERE username = '%u' AND active = '1'


○各デーモンの設定を反映
$sudo /etc/init.d/saslauthd force-reload
$sudo /etc/init.d/dovecot force-reload
$sudo /etc/init.d/postfix force-reload

○メールサーバの動作確認(常に /var/log/mail.log を監視して状況を確認)
・Postfix Adminでメールボックスを作成し、/home/vmail/ 以下にディレクトリが生成されるか
・POP3とIMAPログイン(SSL on/off)
・自分宛へのメール送受信
・外部へのメール送信
・外部からのメール受信
・コマンドラインから発信されたメールの受信

○不要になったメールディレクトリの削除スクリプト設定
$cd /usr/local/bin/
$sudo cp /usr/share/doc/postfixadmin/ADDITIONS/cleanupdirs.pl ./
$sudo vim cleanupdirs.pl
→以下の内容を変更
my $root_path = "/home/vmail";
my $db_database = "postfix";
my $db_username = "postfix";
my $db_password = "postfixユーザのパスワード";

$sudo chown root. cleanupdirs.pl
$sudo chmod 700 cleanupdirs.pl

○削除スクリプトの動作テスト
Postfix Adminでテスト用のメールアドレスを作成して削除(データベースに載っていないメールディレクトリを作る)
$sudo ./cleanupdirs --print
→テスト用メールアドレスのディレクトリだけがリストアップされることを確認
$sudo ./cleanupdirs --delete --print
→テスト用メールアドレスのディレクトリだけが削除されたことを確認

○削除スクリプトの定期実行設定
$sudo vim /etc/cron.daily/cleanupdirs
→以下の内容を記述
#!/bin/sh
/usr/local/bin/cleanupdirs.pl --delete

$sudo chmod +x /etc/cron.daily/clenupdirs

○メールディレクトリ削除ログのrotate設定
$sudo vim /etc/logrotate.conf
→以下の内容を追加
/var/log/removed_maildirs.log {
    daily
}

0 コメント:

コメントを投稿