Postfix + Dovecot + PostfixAdmin(MySQL) インストール

2021-06-22

概要

Postfix(postfix-2.3.3) + Dovecot(dovecot-1.0.7) + PostfixAdmin(postfixadmin-2.3.6)をインストールした時のメモ書き

作業内容(Postfix)

  • 必要なパッケージインストール
  • MySQLの設定
  • バーチャルユーザー作成
  • 設定ファイル編集
  • MTA切替

作業内容(Dovecot)

  • 設定ファイル編集
  • 自動起動及びサービス起動

作業内容(PostfixAdmin)

  • パッケージダウンロード及び解凍
  • 設定ファイル編集
  • Apacheの設定等

Postfix

必要なパッケージインストール

# yum install httpd php php-mysql php-mbstring libdbi-dbd-mysql mysql mysql-devel mysql-server
# yum install postfix
# yum install cyrus-sasl-plain cyrus-sasl-md5
# yum install dovecot
# yum install php-mysql php-imap

MySQLの設定

自動起動及びMySQLを起動

# chkconfig mysqld on
# /etc/init.d/mysqld start

DBのrootのパスワード等を設定(user:root, pass:mysql1234)

# mysqladmin -u root password 'mysql1234'
# mysql -u root -pmysql1234

mysql> select host,user,password from mysql.user;
mysql> delete from mysql.user where user="";
mysql> select host,user,password from mysql.user;
mysql> set password for root@'localhost'=password('mysql1234');
mysql> set password for root@'127.0.0.1'=password('mysql1234');
mysql> set password for root@'mailsv'=password('mysql1234');
mysql> FLUSH PRIVILEGES;
mysql> exit

PostfixのDB作成(user:postfixadmin, pass:postfixadmin1234)

# mysql -u root -pmysql1234
# MySQLに接続
mysql> create database postfixadmin character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on postfixadmin.* to postfixadmin@'localhost' identified by 'postfixadmin1234';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from mysql.user;
mysql> show databases;

mysql> exit

バーチャルユーザーを作成

# mkdir /home/vmailbox
# groupadd -g 600 vuser
# useradd -g vuser -u 600 -d /home/vmailbox -s /sbin/nologin vuser
# chown vuser:vuser /home/vmailbox
# chmod 771 /home/vmailbox

設定ファイル編集

main.cfの編集(ドメイン:example.com)

# cp -p /etc/postfix/main.cf /etc/postfix/main.cf.org
# vi /etc/postfix/main.cf

myhostname = mail.example.com
mydomain = example.com
myorigin = $myhostname
inet_interfaces = all
mydestination =
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown

# SMTP-Auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = $mydomain
smtpd_client_restrictions = reject_rbl_client bl.spamcop.net
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes

# virtual domains
virtual_transport = virtual
virtual_mailbox_base = /home/vmailbox
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
# 事前準備で用意したユーザID,グループID
virtual_minimum_uid = 600
virtual_uid_maps = static:600
virtual_gid_maps = static:600

# メールボックスサイズ制限
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_overquota_bounce = yes

#バックアップしない場合は不要
# 個別に送受信をバックアップする場合(bcc_maps)
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
sender_bcc_maps = hash:/etc/postfix/sender_bcc

#バックアップしない場合は不要
# 全ての送受信をバックアップする場合(always_bcc)
always_bcc = mailbackup@hogehoge.jp

main.cfから外部参照しているファイルを設定する

# vi /etc/postfix/mysql_virtual_alias_maps.cf
user = postfixadmin
password = postfixadmin1234
hosts = localhost
dbname = postfixadmin
table = alias
select_field = goto
where_field = address

# vi /etc/postfix/mysql_virtual_domains_maps.cf
user = postfixadmin
password = postfixadmin1234
hosts = localhost
dbname = postfixadmin
table = domain
select_field = domain
where_field = domain

# vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfixadmin
password = postfixadmin1234
hosts = localhost
dbname = postfixadmin
table = mailbox
select_field = maildir
where_field = username

# vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfixadmin
password = postfixadmin1234
hosts = localhost
dbname = postfixadmin
table = mailbox
select_field = quota
where_field = username

recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
sender_bcc_maps = hash:/etc/postfix/sender_bcc

# bcc_maps:個別に送受信をバックアップしない場合は不要
# vi /etc/postfix/bcc1

#ドメインで指定する場合 @ドメイン 転送先メールアドレス
@e-example1.jp hoge.backup@gmail.com

#個別に設定する場合 転送したいアドレス 転送先メールアドレス
info@example1.com hoge.backup@gmail.com
info@example.com hoge.backup@gmail.com

# cp /etc/postfix/recipient_bcc /etc/postfix/sender_bcc
# postmap /etc/postfix/recipient_bcc
# postmap /etc/postfix/sender_bcc

MTA切替

sendmailの自動起動の削除及びMTAの切替

# /etc/rc.d/init.d/sendmail stop
# chkconfig sendmail off

# alternatives --config mta
選択 コマンド
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix

Dovecot

設定ファイル編集

dovecot.confの編集

# cp /etc/dovecot.conf /etc/dovecot.conf.org
# vi /etc/dovecot.conf
protocols = imap imaps pop3 pop3s
mail_location = maildir:/home/vmailbox/%d/%n
first_valid_uid = 600
first_valid_gid = 600
#passdb pam {

#}

passdb sql {
args = /etc/dovecot-mysql.conf
}

userdb sql {
args = /etc/dovecot-mysql.conf
}

#mechanisms = plain
mechanisms = plain login digest-md5 cram-md5

protocol pop3 {
#pop3_uidl_format = %08Xu%08Xv
pop3_uidl_format = %08Xu%08Xv ←コメント削除
}

socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}

login_process_size = 64

dovecot-mysql.confの編集

# vi /etc/dovecot-mysql.conf
driver = mysql
default_pass_scheme = MD5-CRYPT
connect = host=localhost dbname=postfixadmin user=postfixadmin password=postfixadmin1234
password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT concat('/home/vmailbox/', maildir) as home, 600 as uid, 600 as gid FROM mailbox WHERE username = '%u' AND active = '1'

自動起動及びサービス起動

# /etc/rc.d/init.d/dovecot start
# chkconfig dovecot on
# /etc/rc.d/init.d/postfix start
# chkconfig postfix on

PostfixAdmin

パッケージダウンロード及び解凍

# cd /usr/local/src
# wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.6/postfixadmin-2.3.6.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpostfixadmin%2F&ts=1370413579&use_mirror=jaist
# tar xzvf postfixadmin-2.3.6.tar.gz

設定ファイル編集

# vi /usr/local/src/postfixadmin-2.3.6/config.inc.php

$CONF['setup_password'] = 'XXXXX';
後から変更(後ほどのWebセットアップ[5]で生成されるハッシュ値を入力する)

$CONF['configured'] = true;
$CONF['default_language'] = 'ja';

$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'postfixadmin1234';
$CONF['database_name'] = 'postfixadmin';

# 存在しないドメインのメールアドレスだと管理者登録で
# [管理者は有効なメールアドレスではありません。メールアドレス]のエラーになる
# セットアップ時にDNS参照しない場合は以下に変更
$CONF['emailcheck_resolve_domain']='NO';

$CONF['encrypt'] = 'md5crypt';

$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';

Apacheの設定等

公開ディレクトリにコピー
# cp -pr /usr/local/src/postfixadmin-2.3.6 /var/www/html/postfixadmin
Apacheの設定
# vi /etc/httpd/conf.d/postfixadmin.conf
<Directory "/var/www/html/postfixadmin">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from 192.168.0 #ローカル経由のみ管理画面にアクセス可能


Apache再起動
# /etc/rc.d/init.d/httpd restart

GUIのセットアップは、WEBで情報が多数あるのでその情報を参考にする