メール設定にはpostfixadminがWeb上から自由にメールアドレスの追加削除等の設定が出来て便利である。いちいちコンソールでユーザーの設定をする必要が無く、マルチドメイン設定も可能だ。
参考にしたサイト:
http://uklab.jp/web/setting-sakura-vps-05/
まずはpostfixadminをインストールするが、yumインストールではなくパッケージをダウンロードして展開する。ファイル名はバージョンが変わっている場合合わせて変更する事。Telnetログイン後、「su -」でroot化しておく。また、apache等のhttpdサービスも設定しておく。
wget http://sourceforge.net/projects/postfixadmin/files/latest/download tar -zvxf postfixadmin-2.3.6.tar.gz mv postfixadmin-2.3.6 /usr/share/postfixadmin
データベースを準備する。パスワードは好みのパスワードを設定。
mysql -u root -p create database postfixadmin; GRANT ALL PRIVILEGES ON postfixadmin.* TO postfixadmin@localhost IDENTIFIED BY 'パスワード'; FLUSH PRIVILEGES; exit;
設定ファイルを作成するが、内容は上記参考サイトの
http://uklab.jp/wp-content/uploads/config.local_.php_.txt
をそのままコピーし、DBユーザー名やDBパスワード、DB名の部分を変更する。当サイトでは以下の様になる。
<?php $CONF['configured'] = true; // ↓setup.phpを実行してから変更する。 $CONF['setup_password'] = 'dummy'; // デフォルト言語の設定 $CONF['default_language'] = 'ja'; /***** DB関連設定ここから *****/ $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = 'パスワード'; $CONF['database_name'] = 'postfixadmin'; $CONF['database_prefix'] = ''; /***** DB関連設定ここまで *****/ $CONF['admin_email'] = 'postmaster@programresource.net'; $CONF['encrypt'] = 'md5crypt'; $CONF['page_size'] = '100'; // YESにすることで/home/vuser/domain/user@domain.tldという形式に格納される $CONF['domain_path'] = 'YES'; $CONF['aliases'] = '100'; $CONF['mailboxes'] = '100'; $CONF['maxquota'] = '100'; $CONF['quota'] = 'YES'; $CONF['backup'] = 'NO'; $CONF['sendmail'] = 'NO'; $CONF['fetchmail'] = 'NO'; // ↓dovecotのバージョンが1.2以下の場合はNOにする。 $CONF['new_quota_table'] = 'YES'; // ↓サイトのアドレスによって変更する。 $CONF['user_footer_link'] = 'https://programresource/postfixadmin/users/main.php'; /***** procmail使用時の設定ここから *****/ // メールディレクトリ自動作成 $CONF['mailbox_postcreation_script'] = 'sudo /usr/local/bin/postfixadmin/postfixadmin-mailbox-postcreation.sh'; // メールディレクトリ自動削除 $CONF['mailbox_postdeletion_script'] = 'sudo /usr/local/bin/postfixadmin/postfixadmin-mailbox-postdeletion.sh'; // ドメインディレクトリ自動削除 $CONF['domain_postdeletion_script'] = 'sudo /usr/local/bin/postfixadmin/postfixadmin-domain-postdeletion.sh'; /***** procmail使用時の設定ここまで *****/ ?>
設定ファイル作成後、ブラウザからアクセスできる様にapacheの設定ファイルに追記する。
vi /etc/httpd/conf/httpd.conf
最後に追記
Alias /postfixadmin /usr/share/postfixadmin <Directory "/usr/share/postfixadmin"> Options Indexes AllowOverride AuthConfig </Directory>
権限を変更
chown -R apache.apache postfixadmin
これでブラウザからアクセスできるようになるので、http://[ipaddress]/postfixadmin/ にアクセスしてみる。
エラーがあればErrorと表示される。ここではデータベースエラーとmultibyte stringの設定エラーが表示されている。データベースエラーはデータベース作成時か設定ファイルの記述ミスと考えられるので、再度確認する。
mysql -u postfixadmin -p
でデータベースに入れるか確認してみると良い。
multibyte stringのエラーはパッケージが不足しているので、パッケージを追加する。
yum --enablerepo=remi,epel,rpmforge install php-mbstring php-gd php-xml php-mcrypt pcre-devel
パッケージインストール後httpdを再起動する。
service httpd restart
再度上記アドレスにアクセスし、問題が無ければ管理者アカウントの設定を行う。管理者アカウントは http://[ipaddress]/postfixadmin/setup.php にアクセスする。
下の方にsuperadminの作成があるので、適当に入力して設定する。
アカウント作成が失敗し、config.inc.phpに記載するための文字列が表示されるので、コピーする。
コピーした内容を
vi /usr/share/postfixadmin/config.local.php
で設定ファイルを開き貼り付ける。貼り付け後、http://[ipaddress]/postfixadmin/setup.php に再度アクセスし、superadminをもう一度作成する。
メールアドレス管理用にグループとユーザーを作成する。
groupadd -g 10000 vuser useradd -g vuser -u 10000 vuser
メールボックス操作用のファイルを準備する。データベース名やパスワードは作成時に設定したものに置換する。
vi /etc/postfix/mysql_virtual_alias_maps.cf
user = postfixadmin password = パスワード hosts = localhost dbname = postfixadmin table = alias select_field = goto where_field = address
vi /etc/postfix/mysql_virtual_domains_maps.cf
user = postfixadmin password = パスワード hosts = localhost dbname = postfixadmin table = domain select_field = domain where_field = domain additional_conditions = and active = '1'
vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfixadmin password = パスワード hosts = localhost dbname = postfixadmin table = mailbox select_field = maildir where_field = username
vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfixadmin password = パスワード hosts = localhost dbname = postfixadmin table = mailbox select_field = quota where_field = username #additional_conditions = and active = '1'
設定ファイルを修正する
vi /etc/postfix/main.cf
以下の行をコメントアウトする
#inet_interfaces = localhost #inet_protocols = all #mydestination = $myhostname, localhost.$mydomain, localhost
main.cfの最後に参考サイトにある下記内容をコピーし追記する。
http://uklab.jp/wp-content/uploads/main.cf_.txt
新規ユーザーのメールフォルダー作成用にフォルダーを準備する。
mkdir -p /etc/skel/Maildir/{new,cur,tmp} chmod -R 700 /etc/skel/Maildir/
設定ファイルに設定を追記する。
vi /etc/postfix/master.cf
最後に追記
http://uklab.jp/wp-content/uploads/master.cf_.txt
UI回り設定できたので、メールサーバーのdovecotを設定する。
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm yum install --enablerepo=remi -y dovecot dovecot-mysql
設定ファイル作成
vi /etc/dovecot/conf.d/00-base.conf
参考サイトの下記内容をコピーする
http://uklab.jp/wp-content/uploads/00-base.conf_.txt
vi /etc/dovecot/conf.d/10-auth.conf
下記行をコメントアウト
auth_mechanisms = plain !include auth-system.conf.ext
SQL設定ファイルを作成
vi /etc/dovecot/dovecot-postfixadmin-mysql.conf
下記内容をコピーする。
http://uklab.jp/wp-content/uploads/dovecot-postfixadmin-mysql_percona.conf_.txt
dbname、user、passwordはデータベースの設定内容に置換する。筆者環境の場合
driver = mysql connect = host=/var/lib/mysql/mysql.sock dbname=postfixadmin user=postfixadmin password=パスワード default_pass_scheme = MD5-CRYPT password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1' user_query = SELECT concat('/home/vuser/', maildir) AS home, 10000 AS uid, 10000 AS gid FROM mailbox WHERE username = '%u' AND active = '1'
必要パッケージの追加とサービスの開始、設定ファイルのコピーを行う。
yum install -y cyrus-sasl-plain cyrus-sasl-md5 /etc/init.d/postfix restart chkconfig postfix on /etc/init.d/dovecot start chkconfig dovecot on mkdir /usr/local/bin/postfixadmin cp /usr/share/postfixadmin/ADDITIONS/postfixadmin-domain-postdeletion.sh /usr/local/bin/postfixadmin cp /usr/share/postfixadmin/ADDITIONS/postfixadmin-mailbox-postcreation.sh /usr/local/bin/postfixadmin cp /usr/share/postfixadmin/ADDITIONS/postfixadmin-mailbox-postdeletion.sh /usr/local/bin/postfixadmin mkdir /home/vuser/.deleted-maildirs chmod 0700 /home/vuser/.deleted-maildirs chown vuser:vuser /home/vuser/.deleted-maildirs
スクリプトを一部修正
vi /usr/local/bin/postfixadmin/postfixadmin-mailbox-postcreation.sh
下記行を変更
basedir=/home/vuser
下記行をコメントアウト
#maildirmake "$maildir" #if [ ! -d "$maildir" ]; then # echo "$0: maildirmake didn't produce a directory; bailing out." # exit 1 #fi
exit0の前に下記リンク先の内容を追記する
http://uklab.jp/wp-content/uploads/postfixadmin-mailbox-postcreation.sh_.txt
スクリプトを一部修正
vi /usr/local/bin/postfixadmin/postfixadmin-mailbox-postdeletion.sh
下記行を変更
basedir=/home/vuser trashbase=/home/vuser/.deleted-maildirs subdir=$1
スクリプトを一部修正
vi /usr/local/bin/postfixadmin/postfixadmin-domain-postdeletion.sh
下記行を変更
basedir=/home/vuser trashbase=/home/vuser/.deleted-maildirs
属性を変更
chmod 0700 /usr/local/bin/postfixadmin/postfixadmin*
root権限設定を変更
visudo
下記行を追加
Defaults:apache !requiretty apache ALL=(ALL) NOPASSWD: /usr/local/bin/postfixadmin/postfixadmin-mailbox-postcreation.sh apache ALL=(ALL) NOPASSWD: /usr/local/bin/postfixadmin/postfixadmin-mailbox-postdeletion.sh apache ALL=(ALL) NOPASSWD: /usr/local/bin/postfixadmin/postfixadmin-domain-postdeletion.sh
一旦再起動
reboot
設定が出来たら、http://[ipaddress]/postfixadmin/login.php を開き、作成した管理者でログインする。
ドメインを追加
アドレスを追加
これでメールアドレスが追加される。アドレス追加されましたのメッセージがすぐに出ない場合は、何らかの設定が誤っているので、設定を見直す。
メールアドレス作成後、メール用フォルダーが
/home/vuser/ドメイン名/アドレス名/Maildir
に作成され、そこにメールが受信される。もしローカルユーザーと同じユーザー名を使ったメールアドレスを作成した場合は、ローカルユーザー宛にメールが届いてしまいうまく動かない
/home/ユーザー名/Maildir
この場合、
vi /etc/postfix/main.cf
で設定ファイルの下記行の右側を空白に設定しておく事でローカルユーザーではなくvuser側のメールアドレスに届くようになる。
mydestination=
設定変更後は
/etc/init.d/postfix restart
でサービスを再起動しておく。メール関係のログは
/var/log/maillog
に記録される。筆者の場合、下記ファイルの内容が途中で欠けていたため上手く動作しないケースがあった(コピー時失敗)
/usr/local/bin/postfixadmin/postfixadmin-mailbox-postdeletion.sh
メールクライアントの設定は以下の様にする(例はBeckyの設定)。
メールの受信が出来るが送信が出来ない場合は、サクラのvpsは試用中外向きポート25が使用できないので、その制限にかかっていないか確認しよう(本登録で外向きメールできるようになる)。