Program Resource

開発者向け各種コード、アルゴリズム、リソース情報ライブラリ もしくはねふぁの覚え書き

メール設定には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'] = 'http://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/ にアクセスしてみる。

postfixadmin webui

エラーがあれば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の作成があるので、適当に入力して設定する。

admin initialize

アカウント作成が失敗し、config.inc.phpに記載するための文字列が表示されるので、コピーする。

password string

コピーした内容を

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 を開き、作成した管理者でログインする。

login admin

ドメインを追加

add domain

アドレスを追加

add address

address config

これでメールアドレスが追加される。アドレス追加されましたのメッセージがすぐに出ない場合は、何らかの設定が誤っているので、設定を見直す。

メールアドレス作成後、メール用フォルダーが

/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の設定)。

mail config

mail setup

メールの受信が出来るが送信が出来ない場合は、サクラのvpsは試用中外向きポート25が使用できないので、その制限にかかっていないか確認しよう(本登録で外向きメールできるようになる)。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*