Postfix 3.3 on AmazonLinux2 バーチャルドメイン 2018年8月版

この記事は約12分で読めます。

Postfix 3.4 ソースインストール CentOS7(マルチドメイン)
↑こちらもご覧ください。記事が新しいです。

MySQL 5.7 インストール

Postfix3.3 バーチャルドメイン設定ツールPostfixAdmin用に、MySQL 5.7を入れます。

yum remove mariadb-libs

↑デフォルトで入っているmaria DBのライブラリを削除します。
# rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# yum install mysql-community-server
# mysqld --version
mysqld  Ver 5.7.23 for Linux on x86_64 (MySQL Community Server (GPL))

↑MySQL 5.7が入りました
systemctl start mysqld.service
systemctl enable mysqld.service

↑起動をして、自動起動を設定します。
# cat /var/log/mysqld.log | grep password
2018-08-XXT23:31:18.063313Z 1 [Note] A temporary password is generated for root@localhost: (設定されたパスワード)

↑インストール時に、設定されたパスワードを見てみます。
# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:(catで表示された、パスワードを入れる)
The existing password for the user account root has expired. Please set a new password.
(新しいパスワードをいれる)
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.
あとは、「リターンキー」を入れていく。

postfix 3.3 インストール

postfix 3.3 をソースからインストールします。

# yum install mysql-devel
# tar xzvf postfix-3.3.1.tar.gz
# cd postfix-3.3.1
# make makefiles CCARGS='-DHAS_MYSQL -DDEF_SERVER_SASL_TYPE=\"dovecot\" -I/usr/local/include -I/usr/include/mysql/' AUXLIBS="-lssl -lcrypto -L/usr/local/lib" 'AUXLIBS_MYSQL=-L/usr/lib64/mysql -lmysqlclient -lz -lm'

# make
# make install

# postconf -m|grep mysql
postconf: warning: smtputf8_enable is true, but EAI support is not compiled in
mysql

↑「mysql」と、出たのでOK
smtputf8_enableは、昔のバージョンのSMTPも受け入れるオプション。
postfix 3.xからは、標準で拒否。
# vi /etc/postfix/main.cf
smtputf8_enable=no

↑と記述すると、 「warning: smtputf8_enable is true, but EAI support is not compiled in」
というワーニングは、出てこなくなります。これで、UTF8は、拒否となります。
(2019/11/14 追記)

apache 2.4 と php 7.2 を入れる

バーチャルドメイン設定ツールPostfixAdminのためのapacheなどを設定します。

# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -ivh epel-release-latest-7.noarch.rpm
# yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum-config-manager --enable remi-php72

# yum install php72 php72-php httpd mod_ssl
# yum install --enablerepo=remi,remi-php72 php72-php-mysqlnd php72-php-mbstring

# ln -s /usr/bin/php72 /usr/bin/php

# php -v
PHP 7.2.9 (cli) (built: Aug XX 2018 XX:XX:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

# httpd -v
Server version: Apache/2.4.33 ()
Server built:   Jul 24 2018 19:30:38

# vi /etc/httpd/conf/httpd.conf
AddType application/x-httpd-php .php
を追加します。

PostfixAdmin本体を入れます

# wget https://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-3.2/postfixadmin-3.2.tar.gz
# tar xzvf postfixadmin-3.2.tar.gz 
# cp -a postfixadmin-3.2 /var/www/postfixadmin

↑現時点で最新の、3.2をダウンロードします。
# vi /etc/httpd/conf/httpd.conf
Alias /postfixadmin "/var/www/postfixadmin/public"
を追加します。

↑昔は、「public」の上が、postfixadminのルートディレクトリでしたが、「public」に変更されたようです。
# cd /var/www/postfixadmin
# vi config.local.php

<?php
$CONF['configured'] = true;
$CONF['default_language'] = 'ja';
$CONF['database_user'] = '(MySQLのユーザ)';
$CONF['database_password'] = '(MySQLのユーザに対するパスワード)';
$CONF['database_name'] = '(MySQLのデータベース名)';
$CONF['admin_email'] = '(管理者メールアドレス)';
$CONF['quota'] = 'YES';
?>

を作成します。
config.inc.php
は、オリジナルのままにして、
config.local.php
を追加します。
config.local.php
の情報が優先されます。
# systemctl enable httpd.service
# systemctl start httpd.service

# cd /var/www/postfixadmin
# mkdir templates_c
# chmod 777 templates_c

PostfixAdmin、WEBから設定

http://(サーバーのIP)/postfixadmin/setup.php
にアクセスします。

「Change setup password」
というところで、新しいパスワードを入れます。

$CONF[‘setup_password’] = ‘(英数字の長い文字列)’;
を入れよ。
と指示されるので、「config.local.php」に追加します。

再び
http://(サーバーのIP)/postfixadmin/setup.php
にアクセス。

「Create superadmin account」
と画面がでるので、
管理者用のメールとパスワードを設定します。

これで、
http://(サーバーのIP)/postfixadmin/
からログインができます。

バーチャルドメインの下準備

/mail をメール専用アカウントの保存用ルートディレクトリとし、
各ユーザーのメールボックスは /mail/(独自ドメイン)/user@(独自ドメイン) とします。
各ユーザーのメールボックスは /mail/(独自ドメイン)/user(@前)/ とします。(2018/9/18修正)

##バーチャルドメインで処理するユーザーの作成
# groupadd -g 10000 vuser
# useradd -g vuser -u 10000 vuser

##メール保存用ルートディレクトリの作成
# mkdir /mail
# chown vuser:vuser /mail
# chmod 771 /mail

バーチャルドメイン用 postfixの設定

# vi /etc/postfix/mysql_virtual_alias_maps.cf
user = (MySQLのユーザ)
password = (MySQLのユーザに対するパスワード)
hosts = localhost
dbname = (MySQLのデータベース名)
table = alias
select_field = goto
where_field = address

# vi /etc/postfix/mysql_virtual_domains_maps.cf
user = (MySQLのユーザ)
password = (MySQLのユーザに対するパスワード)
hosts = localhost
dbname = (MySQLのデータベース名)
table = domain
select_field = domain
where_field = domain
additional_conditions = and active = '1'

# vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = (MySQLのユーザ)
password = (MySQLのユーザに対するパスワード)
hosts = localhost
dbname = (MySQLのデータベース名)
table = mailbox
select_field = maildir
where_field = username

chown :postfix /etc/postfix/mysql_virtual_*
chmod 640 /etc/postfix/mysql_virtual_*

バーチャルドメイン用 Postfix設定ファイル main.cf の編集

vi /etc/postfix/main.cf

myhostname = (ローカルホスト名)
mydomain = (ローカルドメイン名)
myorigin = $myhostname
relay_domains = $mydestination

home_mailbox = Maildir/

----- 以下を最終行に追記
local_transport = local
virtual_transport = virtual
virtual_mailbox_base = /mail
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

message_size_limit = 20480000

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,  permit_sasl_authenticated, permit_auth_destination, reject_unauth_destination, reject

NISのwarning

postfix/smtpd: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled

というふうなwarningがでたら、main.cfにて
alias_maps = hash:/etc/aliases

を有効にして、再起動すると、出なくなります。

ドメインとメールアドレスの登録

http://(サーバーのIP)/postfixadmin/
にログインをして、ドメインと、メールアドレスを設定します。

外からメールを送付してみる

上記で、設定した、メールアドレスを外のMTAから、送信してみる。

# ls -al /mail/(登録したドメイン)/(@の前)/new
# -rw------- 1 vuser vuser  634 Aug 17 23:02 1534489349.Vca01I5cb981M915071.xxxxxxxxxxxxx
# -rw------- 1 vuser vuser 1187 Aug 17 23:04 1534489489.Vca01I5cb982M623516.xxxxxxxxxxxxx

と受信ができました。

2018年9月3日更新

makeの設定など、修正をいたしました。

2018年9月18日更新

mailboxの定義は、「/mail/(独自ドメイン)/user(@前)/ 」と訂正します。

タイトルとURLをコピーしました