CentOS 5.6+Postfix+MySQL+Postfixadmin
12月 01
CentOS centos, mysql, postfix, postfixadmin No Comments
MySQLとか楽にいじれるようになると有名なPHPMyAdminというのがあるけど、それのPostfix版みたいなイメージのがあるよ!と聞いて試してみた。
Webインターフェースでドメイン追加・削除したりメールアドレス管理とかしちゃって楽ですよ的なものらしい。
これを利用するためにはドメインとかをDBで管理する、PostfixのDB対応版が必要。
今追加してあるyumリポジトリには無かったけど、centosplusにSRPMがあったので、それを使った。
■設定に使う情報を決める
Postfix/Dovecot実行ユーザー
Linux ユーザーID 10000
Linux ユーザー名 vmailadmin
Linux グループ名 vmailadmin
□Maildir/のルートディレクトリ
/var/spool/mail/vhost
■設定
su -
service sendmail stop
# Postfix(DB対応版)をインストール
yum remove postfix
yum install pcre.x86_64 pcre-devel.x86_64 mysql-devel.x86_64
rpm -ivh http://ftp.riken.jp/Linux/centos/5.7/centosplus/SRPMS/postfix-2.3.3-2.3.centos.mysql_pgsql.src.rpm
cd /usr/src/redhat/SPECS/
vi postfix.spec
%define PGSQL 0
%define MYSQL 1
rpmbuild -ba postfix.spec
rpm -Uvh /usr/src/redhat/RPMS/x86_64/postfix-2.3.3-2.3.centos.mysql_pgsql.x86_64.rpm
alternatives –config mta
yum remove sendmail
# グループ/ユーザー追加
groupadd vmailadmin
useradd -u 10000 -s /bin/nologin -g vmailadmin vmailadmin
# Maildir/ルートディレクトリ作成
mkdir /var/spool/mail/vhost
chown vmailadmin:vmailadmin /var/spool/mail/vhost
chmod 771 /var/spool/mail/vhost
# Postfixの設定
vi /etc/postfix/mysql_virtual_alias_maps.cf
—————————————————————-
user = DBのユーザー
password = DBのユーザーのパスワード
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
—————————————————————-
vi /etc/postfix/mysql_virtual_domains_maps.cf
—————————————————————-
user = DBのユーザー
password = DBのユーザーのパスワード
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and active = ’1′
—————————————————————-
vi /etc/postfix/mysql_virtual_mailbox_maps.cf
—————————————————————-
user = DBのユーザー
password = DBのユーザーのパスワード
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
—————————————————————-
vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
—————————————————————-
user = DBのユーザー
password = DBのユーザーのパスワード
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
# additional_conditions = and active = ’1′
—————————————————————-
vi /etc/postfix/main.cf
—————————————————————-
#以下は各々の環境に合わせて編集
myhostname = mail.example.com
mydomain = example.com
myorigin = $myhostname
inet_interfaces = all
mydestination = $mydomain
relay_domains = $mydestination
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown
#以下は追記
local_transport = virtual
virtual_transport = virtual
virtual_mailbox_base = /var/spool/mail/vhost
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_alias_domains = $virtual_alias_maps
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 10000
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000
maximal_backoff_time = 800s
minimal_backoff_time = 100s
bounce_queue_lifetime = 60m
maximal_queue_lifetime = 60m
#mailbox_size_limit = 1024000000
message_size_limit = 20480000
#virtual_mailbox_limit = 51200000
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_overquota_bounce = yes
virtual_mailbox_limit_inbox = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = $myhostname
smtpd_client_restrictions = reject_rbl_client bl.spamcop.net
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients = yes
—————————————————————-
vi /etc/postfix/master.cf
—————————————————————-
submission inet n – n – – smtpd
# -o smtpd_enforce_tls=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
—————————————————————-
# Postfix Admin のインストール
cd
wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.4/postfixadmin_2.3.4.tar.gz?r=&ts=1317889955&use_mirror=jaist
tar xfvz postfixadmin_2.3.4.tar.gz
mv postfixadmin-2.3.4 /var/www/postfixadmin
cd /var/www/
restorecon -R postfixadmin
cd postfixadmin
vi config.inc.php
—————————————————————-
# 編集
$CONF['configured'] = true;
$CONF['default_language'] = ‘ja’;
$CONF['database_type'] = ‘mysql’;
$CONF['database_host'] = ‘localhost’;
$CONF['database_user'] = ‘DBのユーザー’;
$CONF['database_password'] = ‘DBのユーザーのパスワード’;
$CONF['database_name'] = ‘postfix’;
$CONF['encrypt'] = ‘md5crypt’;
$CONF['page_size'] = ’50′;
$CONF['domain_in_mailbox'] = ‘YES’;
$CONF['aliases'] = ’100′;
$CONF['mailboxes'] = ’100′;
$CONF['maxquota'] = ’300′;
—————————————————————
vi /etc/httpd/conf.d/postfixadmin.conf
—————————————————————
Alias /postfixadmin “/var/www/postfixadmin”
Order allow,deny
Allow from all
—————————————————————
# Dovecotのインストール
yum install dovecot.x86_64 cyrus-sasl-plain.x86_64 cyrus-sasl-md5.x86_64 php53-imap.x86_64
service saslauthd stop
chkconfig saslauthd off
vi /etc/dovecot.conf
—————————————————————
protocols = imap imaps pop3 pop3s
mail_location = maildir:/var/spool/mail/vhost/%u
passdb sql {
args = /etc/dovecot-mysql.conf
}
userdb sql {
args = /etc/dovecot-mysql.conf
}
mechanisms = plain login digest-md5 cram-md5
pop3_uidl_format = %08Xu%08Xv
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
login_process_size = 64
—————————————————————
vi /etc/dovecot-mysql.conf
# default_pass_scheme は postfixadminのconfig.inc.phpと合わせる
—————————————————————
driver = mysql
default_pass_scheme = MD5-CRYPT
connect = dbname=postfix user=DBのユーザー host=/var/lib/mysql/mysql.sock password=DBのユーザーのパスワード
password_query = SELECT password FROM mailbox WHERE username = ‘%u’ AND active = ’1′
user_query = SELECT concat(‘/var/spool/mail/vhost/’, maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = ‘%u’ AND active = ’1′
—————————————————————
# MySQLの設定
mysql -u root
delete from mysql.user where user=”";
CREATE DATABASE postfix;
CREATE USER ‘DBのユーザー’@'localhost’ IDENTIFIED BY ‘DBのユーザーのパスワード’;
GRANT ALL PRIVILEGES ON `postfix`.* TO ‘DBのユーザー’@'localhost’;
FLUSH PRIVILEGES;
quit
# Postfix, Dovecotを自動起動するよう設定。
chkconfig postfix on
chkconfig dovecot on
service postfix start
service dovecot start
service httpd reload
# 下記URLにアクセスし、全てOKになっていることを確認。
# エラーが出ていて何か変更した場合は、service httpd reload しないと反映されない場合がある。
http://www.example.com/postfixadmin/setup.php
設定時に下記のようなものが画面に出力されるのでコピペする
—————————————————————-
vi /var/www/postfixadmin/config.inc.phpを編集
$CONF['setup_password'] = ‘なんか暗号化されたあれっぽい半角の文字列’;
—————————————————————-
Postfix + Dovecot 2 + PostfixAdmin + MySQL [がらくたネット]など参考にチクチクいじってみたら、あっさり動いたことは動いた。
何か色々できて便利だね!すごいね!
あ、メールサーバー運用してなかったわ。
RSS
最近のコメント