postfixadminためのDB設定
# mysql -u root -p
mysql> create database postfixadmin character set utf8 collate utf8_bin;
mysql> grant all privileges on postfixadmin.* to postfixadmin@'localhost' identified by 'passwd';
postfixadmin設定
/var/www/html/postfixadmin/config.local.php を作成
<?php
$CONF['configured'] = true;
$CONF['default_language'] = 'ja';
$CONF['database_type'] = 'mysqli';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'passwd';
$CONF['database_name'] = 'postfixadmin';
$CONF['encrypt'] = 'dovecot:CRAM-MD5'; <-- 暗号化パスワードで認証するため
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
?>
postfixadmin setup
http://mySite/postfixadmin/setup.php にアクセス
下記メッセージが出てきました
Warning: Depends on: IMAP functions - NOT FOUND
To install IMAP support, install php5-imap
Without IMAP support, you won't be able to create subfolders when creating mailboxes.
指示通り、php-imapをインストール
# yum install php-imap
# systemctl restart httpd
再度setup.phpにアクセスして、Setup passwordを入れて、hashを作成します。
そして、画面上のメッセージ通り、/var/www/html/postfixadmin/config.local.php に$CONF['setup_password']を追加
If you want to use the password you entered as setup password, edit config.inc.php or config.local.php and set
$CONF['setup_password'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx';
画面上管理者情報入れて「管理者追加」ボタンをクリック
mail user用意
postfixadminを使用するには、postfixのvirtual domainを利用
# 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
postfix設定用ファイル作成
postfixadminを使用するには、SQLから情報を取るため、postfixadmin提供してくるshell scriptからpostfixでSQLアクセス用ファイルを作成できる
# sh /var/www/html/postfixadmin/DOCUMENTS/POSTFIX_CONF.txt
Database host? (often localhost)
Database name?
postfixadmin
Database user?
postfixadmin
Database password?
passwd
...
# mv /tmp/postfixadmin-XXXX /etc/postfix/sql
# chmod +rx /etc/postfix/sql
postfix設定
/etc/postfix/main.cfを編集
不審IPからの接続は /etc/postfix/restricted_ipaddress に追加することでブロックできる
myhostname = mySite.com
mydomain = mySite.com
「inet_interfaces = all」の行頭にある#を削除して、この行を有効にします。
さらに、「inet_interfaces = 127.0.0.1」の行頭に#を追加し、この行を無効にします。
mydestination = localhost.$mydomain, localhost <-- virtual_mailbox_domainsと重複ものないように
# security
disable_vrfy_command = yes
smtpd_client_restrictions = permit_mynetworks,
check_client_access texthash:/etc/postfix/restricted_ipaddress,
reject_invalid_hostname,
permit
smtpd_delay_reject = no <-- これないとすぐrejectされないようで
# SMTP AUTH
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot <-- dovecot提供してくるsaslを利用認証行う、cyrus-saslを使う場合は不要(smtpd_sasl_pathも)
smtpd_sasl_path = private/auth
# postfixadmin
local_transport = local
virtual_transport = virtual
virtual_mailbox_base = /home/vmailbox
virtual_minimum_uid = 600
virtual_uid_maps = static:600
virtual_gid_maps = static:600
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_alias_maps =
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_maps =
proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
# TLS/SSL
smtpd_use_tls = yes
smtp_tls_security_level = may
smtpd_tls_cert_file = /etc/letsencrypt/live/mySite.com/fullchain.pem <-- let's Encryptを使用
smtpd_tls_key_file = /etc/letsencrypt/live/mySite.com/privkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
/etc/postfix/master.cfを編集
ポート587を使用できるように下記4行の行頭にある#を削除して、有効にします。
submission inet n - n - - smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_helo_restrictions=$mua_helo_restrictions
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
SSL通信のため、以下変更
# smtps inet n - n - - smtpd
# -o syslog_name=postfix/smtps
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
↓ 4行のコメントアウトを取る
smtps inet n - n - - smtpd
# -o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
postfix再起動(もともと起動されている)
# systemctl restart postfix
dovecot設定
/etc/dovecot/dovecot.confを編集
protocols = imap pop3
/etc/dovecot/conf.d/10-mail.confを編集
mail_location = maildir:/home/vmailbox/%d/%n
first_valid_uid = 600
first_valid_gid = 600
/etc/dovecot/conf.d/10-auth.confを編集
disable_plaintext_auth = no
auth_mechanisms = cram-md5 plain login
下記2行の行頭にある#を削除して、有効にします。
!include auth-system.conf.ext
!include auth-sql.conf.ext
/etc/dovecot/conf.d/auth-sql.conf.ext 以下のようになっているか確認
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
/etc/dovecot/dovecot-sql.conf.extを作成
driver = mysql
default_pass_scheme = MD5-CRYPT
connect = host=localhost dbname=postfixadmin user=postfixadmin password=passwd
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'
iterate_query = SELECT userid AS username, domain FROM users
/etc/dovecot/conf.d/10-master.confを編集
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
/etc/dovecot/conf.d/10-ssl.conf 編集
ssl = yes
ssl_cert = </etc/letsencrypt/live/mySite.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mySite.com/privkey.pem
Dovecotの起動と自動起動設定
# systemctl start dovecot
# systemctl enable dovecot