CentOS 6.3(6.4)に挑戦 : 25:postfixadminのインストール
参考URL:http://e-garakuta.net/techinfo/doku.php/linux/postfix-virtual
参考URL:http://www.kurobuti.com/linux_server/?page_id=364
動いていますが色々な修正をして行ったので、ここに設定が反映していないとも限りません。どなたか気がついたら、お問い合わせからお知らせ下さい。又、Mailを保存するディレクトリーを変更しました。
/etc/php.ini を変更して置きます(これはpostfixadminとは直接関係ありません。)
date.timezone = Asia/Tokyo ←東京にする
post_max_size = 50M
upload_max_filesize = 50M
今のままではユーザー名が同じだと、各バーチャルドメインで同じ人になってしまう(test@domain1.comとtest@domain22.comは同じ人)ので作り直す
先ずはバーチャルドメイン用のユーザーを作る。
# groupadd -g 10000 vusers
# useradd -g 10000 -u 10000 vusers
mailを保存するディレクトリー作ってあるので(これには独立したディスク領域を割り当てています。fstabの内容:/dev/vde /Maildata ext4 defaults 0 0)オーナー等を設定
# chown vusers:vusers /Maildata
# chmod 770 /Maildata
postfixadminでmysqlを使うので、/etc/postfix/mysql_virtual_alias_maps.cfの作成
user = postfixadmin
password =XXXXX
hosts = localhost
dbname = postfix
#query= SELECT goto FROM alias WHERE address='%s'
table = alias
select_field = goto
where_field = address
以前はコメントアウトしてある行の様にmysqlのqueryを一行で書いていたのだが、変更になったのかなー。ともかく参考URL通りにした。
/etc/postfix/mysql_virtual_domains_maps.cfの作成
user = postfixadmin
password =XXXXX
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and active = '1'
/etc/postfix/mysql_virtual_mailbox_maps.cfの作成
user = postfixadmin
password =XXXXX
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
/etc/postfix/mysql_sender_login_maps.cfの作成
user = postfixadmin
password =XXXXX
hosts = localhost
dbname = postfix
query= SELECT goto FROM alias WHERE address='%s'
/etc/postfix/virtualの編集
22:メールサーバーのバーチャルドメイン設定で設定した物を全てコメントアウトする
#172club.net anything
#@172club.net @kinryokai.net
次に/etc/postfix/main.cfの編集をする
#mydestination = $myhostname, localhost.$mydomain, localhost ←コメントアウトする
mydestination = ←追記
#virtual_maps = hash:/etc/postfix/virtual ←あれば、コメントアウトする
# local_transport = local ←コメントアウト
local_transport = virtual ←追記
#smtpd_sasl_local_domain = $myhostname ←コメントアウト
smtpd_sasl_path = private/auth ←追記
# ここから最後まで追記
# virtual_mailbox_domains の配送にバーチャル配送エージェントを使用
virtual_transport = virtual
# バーチャルメールボックスの場所
virtual_mailbox_base = /Maildata
# バーチャルメールボックスを使用するドメインの検索テーブル
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
# バーチャルメールボックスを使用するメールボックスのアドレス検索テーブル
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
# ローカルまたはバーチャルのエイリアス設定
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# ローカルまたはバーチャルのエイリアスされるドメイン
virtual_alias_domains = $virtual_alias_maps
# ユーザーIDの最小値
virtual_minimum_uid = 10000
# ユーザーID
virtual_uid_maps = static:10000
# グループID
virtual_gid_maps = static:10000
virtual_mailbox_limit = 1073741824
smtpd_sender_login_maps = mysql:/etc/postfix/mysql_sender_login_maps.cf
postfixadminを使うにはmysqlを有効にしたpostfixが必要だが、
24:taRgreyによるスパム対策(taRgrey)で使用したSRPMはmysqlが有効になっている
httpd php php-mysql php-mbstring dovecot-mysql がいるので無ければyumでインストール。
postfixadminのインストール(2013年2月23日現在2.3.6が最終バージョン)
http://sourceforge.net/projects/postfixadmin/ で確認してね。
# wget http://sourceforge.net/projects/postfixadmin/files/latest/download?_test=redirect
postfixadminがmysqlを使うのでデーターベースを作る。
# mysql -u root -pXXXXX
最後のXXXXXはログインするユーザーのパスワード。この時-pとパスワードの間にスペースを入れてはいけない。
postfixと言う名前でデーターベースを作る
mysql> create database postfix;
データーベースpostfixに使用するユーザーをpostfixadminとして作成し、全ての権限を与える。
mysql> grant all privileges on postfix.* to postfixadmin@localhost identified by 'postfixadminのパスワード';
データーベース(show databases)やuser(select user from mysql.user where user="postfixadmin";)が出来たか確認後、mysqlを抜ける
mysql> exit
作ったユーザーでmysqlにログイン出来るか確認
# mysql -u postfixadmin -pXXXXX
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 65
Server version: 5.1.61 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
出来たのでmysqlを抜けておく。
postfixadminの解凍
# tar zxvf postfixadmin-2.3.6.tar.gz
出来たDIRをrename
# mv postfixadmin-2.3.6 postfixadmin
それをWEBサーバーのデーターDIRに移動
# mv postfixadmin /webdata/public/kinryokai/
私はdefault(/var/www/html)から変えている。
postfixadminのパーミッションの変更
# cd /webdata/public/kinryokai/
# chown -R apache:apache postfixadmin/
# cd postfixadmin/
# chmod 640 *.php
# cd admin/
# chmod 640 *.php
# cd ../images/
# chmod 640 *.png
# cd ../languages/
# chmod 640 *.lang
# cd ../users/
# chmod 640 *.php
# cd ..
config.inc.phpファイルの設定
$CONF['configured'] = true; ←trueに変更
$CONF['default_language'] = 'ja'; ←jaに変更
$CONF['database_user'] = 'postfixadmin'; ←設定したデーターベースと合わせる
$CONF['database_password'] = 'xxxx'; ←設定したデーターベースと合わせる
$CONF['database_name'] = 'postfix'; ←設定したデーターベースと合わせる
$CONF['admin_email'] = 'postmaster@kinryokai.net'; ←管理者のemail
$CONF['encrypt'] = 'cleartext'; ←mysqlを使うときはcleartextしか使えない
$CONF['domain_path'] = 'YES'; ←YESに変更
$CONF['mailboxes'] = '100'; ←100に変更
$CONF['maxquota'] = '10000'; ←10000に変更
$CONF['show_footer_text'] = 'NO'; ←NOに変更
$CONF['welcome_text'] = <<<EOM
このメールは管理者があなたのメアドを作成しましたので、送信をしました。
EOM; ←日本語に変更
/etc/dovecot/dovecot-postfixadmin-mysql.confを作る
driver = mysql
connect = host=localhost dbname=postfix user=postfixadmin password=XXXXXXXX
default_pass_scheme = PLAIN
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT concat('/Maildata/', maildir) AS home, 10000 AS uid, \
10000 AS gid FROM mailbox WHERE username = '%u' AND active = '1'
/etc/dovecot/conf.d/00-base.confの作成
# debug関係
auth_debug_passwords = yes
auth_verbose = yes
auth_debug = yes
listen = *
disable_plaintext_auth = no
auth_mechanisms = PLAIN LOGIN CRAM-MD5
mail_location = maildir:/Maildata/%d/%u 最後を%nから%uに訂正-2012-10-31 中村さん御指摘ありがとうございます。
first_valid_uid = 10000
first_valid_gid = 10000
mail_plugins = quota
protocol imap {
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
mail_plugins = $mail_plugins imap_quota
}
protocol pop3 {
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
passdb {
driver = sql
args = /etc/dovecot/dovecot-postfixadmin-mysql.conf
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-postfixadmin-mysql.conf
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
}
plugin {
quota = maildir:User quota
}
/etc/dovecot/conf.d/10-auth.confの設定
disable_plaintext_auth = no ←コメントを外す
#!include auth-system.conf.ext ←#を付けコメントにする
/etc/dovecot/conf.d/10-mail.confの設定
mail_location = maildir:/Maildata/%d/%n ←右辺を訂正
/etc/sasl2/smtpd.confの設定
#pwcheck_method: saslauthd
pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_user: postfixadmin
sql_passwd: XXXXX
sql_database: postfix
sql_select: SELECT password FROM mailbox WHERE username = '%u@%r' AND \
active = '1' mech_list: cram-md5 digest-md5 plain
login log_level: 3
/etc/procmailrc変更
MAILDIR=/Maildata/$DOMAIN/$USER\@$DOMAIN/ ←メールDIRの場所が変更になるので反映させる
webにnoticeが表示されるので、textファイルの名前を変更しておく。
# cd positfixadminのあるdirectory
# mv motd.txt motd.txt.org
# mv motd-users.txt motd-users.txt.org
ブラウザでIPアドレス/postfixadmin/setup.phpにアクセスする
私は左の図の赤線があるIMAP FunctionsがOKになっていますが、これはphp-imapが既にインストールされていたからですが、エラーになるかもしれません。IMAPを使う時はyumでphp-imapをインストールしapacheを再起動してください。
その後ブラウザで再読み込みすると、右の図の様になります。
Setup passwordにに任意のパスワードを入力し、"Generate password hash"をクリックすると、右下の画面になりますので、赤線を引いてあるHASH値がありますので、config.inc.phpに張り付けます。下のハッシュ値は画面とは違いますがあしからず。図と文字がオーバーラップして見づらくなった時はブラウザの表示幅を狭くしていくと、オーバーラップが解消します。
$CONF['setup_password'] = '83a9a0c889b7a4d1b6179462ba38c0d3:7704bbc36ee2098e6bdaddc430910f2abc57b55c';
そして、”Setup password" に設定したパスワードを入力、ドメイン管理者のメアド、ISP等のこのメールサーバー以外のメアドが良い。そしてパスワードを設定し、”管理者を追加”をクリックし管理者を作ります。WEBの下の方に書いてありますがVer2.3からsetup.phpはdeleteしなくてもよくなった見たいですが、私はパスワードを記憶させてしまいましたので、このままでは新しい管理者を作られ、問題がありますのでsetup.phpをリネームしました。
そして、ブラウザでhttp://IPアドレス/postfixadmin/login.php にアクセスし、作成した管理者でログインできる事を確認して置きます。
ドメインやメールユーザーの追加をして行く時に注意:ドメインを作っただけでは/home/vusersに下にドメインのDIRは出来ません。そのドメインにメールユーザーを作るとその時初めてドメインのDIRが出来、その下にユーザーが出来ます。
又、サンダーバードでメールをimapで使っていて気がついたのは、初期設定では下書きと迷惑メールのDIRは出来ないが、それぞれ、作成メールを保存した時、アカウント設定で迷惑メールと....にチェックを入れ、次のアカウントの迷惑メール.....にチェックを入れると作られる。
後日、作り直そうと思ってこのページを参考にしたが、ログインは出きるもののエラーが出る。原因は以前に作ったdatabaseが残っていた為。mysqlのpostfix(database名)を削除してからやると問題ない。
又、postfixadminでメールやドメインを削除しても、mysql上にあるデータが削除されるだけで、実態のメールデーターなどは削除されないので、必要ならばマニュアル削除する。(以前はpostfixadmin-domain-postdeletion.sh等を設定してあったが、テストしたらエラーが出たので、手動にした)
テストが終了したら、以前に作っていたskel directoryに入れたMaildirを消して、ユーザーを作成してもdirectoryを作らないようにする。その人がメールアドレスがいる時はpostfixadminで作成する
# rm -rf /etc/skel/Maildir/
さらにメールデーターの移行が終わったら、各ユーザー直下のMaildirもdeleteしておく。
投稿された内容の著作権はコメントの投稿者に帰属します。