「広告」

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

「広告」
記事内に広告が含まれています。
「広告」

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をコピーしました