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
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(@前)/ 」と訂正します。