Postfix 3.4 マルチドメイン版、ソースインストールをCentOS7上で行ってみました。
以前は、Postfix3.3をAmazonLinux2に入れてチェックしました。
(Postfix 3.3 on Amazon Linux 2 ソースインストール 2018年7月版 )
↑ CentOS Stream8、Postfix 3.6版
関連記事
Postfix 3.4 [RainLoop] CentOS7 (マルチドメイン) (2019/05/31 追加)
Postfix 3.4 [迷惑メール対策 SpamAssassin ユーザ毎] CentOS7 (マルチドメイン) (2019/05/30 追加)
Postfix 3.4 [迷惑メール対策 SpamAssassin メール振り分け] CentOS7 (マルチドメイン) (2019/05/24 追加)
Postfix 3.4 [迷惑メール対策 SpamAssassin] CentOS7 (マルチドメイン) (2019/05/21 追加)
Postfix 3.4 [迷惑メール対策 DKIM] CentOS7 (マルチドメイン) (2019/05/20 追加)
Postfix 3.4 [迷惑メール対策 SPF] CentOS7 (マルチドメイン) (2019/05/14 追加)
Postfix 3.4 [SSL 送受信] CentOS7(マルチドメイン) (2019/05/12 追加)
Postfix 3.4 [dovecot] CentOS7(マルチドメイン) (2019/05/11 追加)
ポート変更
CentOS7 firewall 設定 / ConoHa VPS
にある、SSHポートの変更を行います。
ホスト名変更
で、「ホスト名」の変更を行います。
事前インストール
# yum update # yum remove mariadb-libs # yum groupinstall "Development Tools" # yum install openssl-devel
↑必要な物を入れておきます。
MySQL 5.7
# rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm # yum install mysql-community-server
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Importing GPG key 0xXXXXXXXX: Userid : "MySQL Release Engineering <mysql-build@oss.oracle.com>" Fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX Package : mysql57-community-release-el7-11.noarch (installed) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Is this ok [y/N]:
途中、上記のようなメッセージが出てきます。
ダウンロード時の検証を行うため、サーバー内に、キーがないため、
「キーを入れるよ。いい?」というメッセージです。
「y」を押して進みます。
# mysqld --version mysqld Ver 5.7.26 for Linux on x86_64 (MySQL Community Server (GPL))
↑ 5.7.26が入りました。
# systemctl start mysqld.service # systemctl enable mysqld.service
↑起動と、自動起動を設定します。
# cat /var/log/mysqld.log | grep password 2019-XX-XXTXX:XX:XX.285326Z 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. New password:(新たに入力したパスワード) Re-enter 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. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) :
↑上記、「パスワードの強度が100だが、再度、変更する?」
(100が最高で、十分、複雑な英数字だよ!と、言われている)
と、聞かれました。複雑なパスワードを入れましたので・・・
Yを押してみるそして・・・
New password: (安易なパスワード) Re-enter new password: (安易なパスワード)
↑ここで、安易な(簡単な)パスワードを入力すると、
Estimated strength of the password: 0 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :
↑「強度がゼロじゃー」ということで、再度設定を求められます。
先ほどの100のパスワードを再度入れます。
次に進ます。
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
↑匿名ユーザを削除するか。「y」を押します。削除したほうがセキュリティが向上します。
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
↑リモートから、「root」でログインするのを禁止するか。「y」で禁止をすると、セキュリティが向上します。
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
↑「test」というデータベースを削除するか。「y」で削除したほうが、セキュリティが向上します。
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
すべてを設定して、再読込をするか。「y」とします。
Success. All done!
で、完了します。
Postfix 3.4 本体 インストール
# yum install mysql-devel
icu4c-64_2
# wget http://download.icu-project.org/files/icu4c/64.2/icu4c-64_2-src.tgz (↑上記ではなく↓で) # wget https://github.com/unicode-org/icu/releases/download/release-64-2/icu4c-64_2-src.tgz (↑2020/07/30 修正) # tar xzvf icu4c-64_2-src.tgz # cd icu/source # ./runConfigureICU Linux # make # make install
db-4.8.30
# wget http://download.oracle.com/berkeley-db/db-4.8.30.tar.gz # tar zxvf db-4.8.30.tar.gz # cd db-4.8.30/build_unix/ # ../dist/configure --prefix=/usr/ # make # make install
# echo /usr/lib > /etc/ld.so.conf.d/usr-lib.conf # ldconfig
Postfix 3.4.5
# tar xzvf postfix-3.4.5.tar.gz # cd postfix-3.4.5/ # make makefiles CCARGS='-DUSE_TLS -DUSE_SASL_AUTH -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
httpd 2.4,php 7.3
# yum -y install yum-utils # 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-php73 # yum install php73 php73-php httpd mod_ssl
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi Importing GPG key 0xxxxxxxx: Userid : "Remi Collet <RPMS@FamilleCollet.com>" Fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX Package : remi-release-7.6-2.el7.remi.noarch (installed) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-remi Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 Importing GPG key 0xxxxxxxx: Userid : "Fedora EPEL (7) <epel@fedoraproject.org>" Fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX Package : epel-release-7-11.noarch (@extras) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
↑インストール中、キーがないよということで、「y」を入れて、インストールします。
# yum install --enablerepo=remi,remi-php73 php73-php-mysqlnd php73-php-mbstring # ln -s /usr/bin/php73 /usr/bin/php
# httpd -v Server version: Apache/2.4.6 (CentOS) Server built: XXX XX 2019 XX:XX:XX # php -v PHP 7.3.5 (cli) (built: XXX XX 2019 XX:XX:XX) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.5, Copyright (c) 1998-2018 Zend Technologies
↑http 2.4 と、php 7.3 が入りました。
# vi /etc/httpd/conf/httpd.conf AddType application/x-httpd-php .php
↑phpを有効にします。
# vi /etc/httpd/conf/httpd.conf <Directory "/var/www/html"> Options Indexes FollowSymLinks ↓ Options All -Indexes +SymLinksIfOwnerMatch -FollowSymLinks AllowOverride None ↓ AllowOverride All </Directory>
↑httpd.confファイルの「<Directory “/var/www/html”>」部分の2行を変更します。(2019/07/06 追記)
PostfixAdmin 3.2
PostfixAdmin本体
postfixをWEB上から管理するツールを入れます。
# 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
# vi /etc/httpd/conf/httpd.conf Alias /postfixadmin "/var/www/postfixadmin/public"
http://(ドメイン)/postfixadmin/
が管理画面になるように設定をします。
セキュリティ上、「postfixadmin」以外の文字列にしたほうがいいかと思います。
無差別にアタックがあります。
DBに登録
# mysql -u root -p
でログインをして、PostfixAdmin用のDBを作成します。
use mysql; INSERT INTO user (host,User,authentication_string,ssl_cipher,x509_issuer,x509_subject) VALUES ('localhost','(postfixadminユーザー)',password('(postfixadminパスワード)'),'','',''); INSERT INTO db (host,db,user) VALUES ('localhost','(postfixadminデータベース)','(postfixadminユーザー)'); UPDATE db SET Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Execute_priv='Y',Event_priv='Y',Trigger_priv='Y' where db='(postfixadminデータベース)'; create database (postfixadminデータベース); flush privileges;
postfixadminの設定関係
# cd /var/www/postfixadmin # vi config.local.php <?php $CONF['configured'] = true; $CONF['default_language'] = 'ja'; $CONF['database_user'] = '(postfixadminユーザー)'; $CONF['database_password'] = '(postfixadminパスワード)'; $CONF['database_name'] = '(postfixadminデータベース)'; $CONF['admin_email'] = '(連絡先メールアドレス)'; $CONF['quota'] = 'YES'; ?>
httpd 関係ののパラメーター設定
# systemctl enable httpd.service # systemctl start httpd.service
↑起動&自動起動を設定します。
# cd /var/www/postfixadmin # mkdir templates_c # chmod 777 templates_c
↑ディレクトリを作成しておきます。
# firewall-cmd --permanent --add-service=http # firewall-cmd --permanent --add-service=https # firewall-cmd --reload
↑CentOS7、Firewallのポートを空けておきます。
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/
からログインができます。
バーチャルドメイン用 postfixの設定
/mail をメール専用アカウントの保存用ルートディレクトリとし、
各ユーザーのメールボックスは /mail/(独自ドメイン)/user(@前)/ とします。
# groupadd -g 10000 vuser # useradd -g vuser -u 10000 vuser
↑バーチャルドメインで処理するユーザーの作成
# mkdir /mail # chown vuser:vuser /mail # chmod 771 /mail
↑メール保存用ルートディレクトリの作成
vi /etc/postfix/mysql_virtual_alias_maps.cf user = (postfixadminユーザー) password = (postfixadminパスワード) hosts = localhost dbname = (postfixadminデータベース) table = alias select_field = goto where_field = address
vi /etc/postfix/mysql_virtual_domains_maps.cf user = (postfixadminユーザー) password = (postfixadminパスワード) hosts = localhost dbname = (postfixadminデータベース) table = domain select_field = domain where_field = domain additional_conditions = and active = '1'
vi /etc/postfix/mysql_virtual_mailbox_maps.cf user = (postfixadminユーザー) password = (postfixadminパスワード) hosts = localhost dbname = (postfixadminデータベース) 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_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, permit_auth_destination, reject_unauth_destination, reject
Postfix用 Firewall調整
あらかじめ、必要なポートを空けておきます。
# firewall-cmd --permanent --add-service=pop3 # firewall-cmd --permanent --add-service=pop3s # firewall-cmd --permanent --add-service=smtp-submission # firewall-cmd --permanent --add-service=smtp # firewall-cmd --permanent --add-service=smtps # firewall-cmd --permanent --add-service=imap # firewall-cmd --permanent --add-service=imaps # firewall-cmd --reload
Postfix 3.4 起動 (2019/05/11 更新)
vi /etc/systemd/system/postfix.service ------------------------------------------- [Unit] Description=postfix After=network.target [Service] Type=simple RemainAfterExit=yes ExecStart=/usr/sbin/postfix start ExecStop=/usr/sbin/postfix stop [Install] WantedBy=multi-user.target
systemctl start postfix systemctl enable postfix
↑ postfixを起動して、自動起動も設定します。
http://(サーバーのIPアドレス)/postfixadmin/
から、ドメインとメールアドレスを設定してみます。
テストなので、移行前のドメインでもテストはできます。
コマンドプロンプトから、
# mail
コマンドで、設定したメールアドレス宛てに送付してみます。
PostfixAdminで、ドメイン等を設定しても
/mail/以下は、空ですが、メールを送るとディレクトリが自動的に作成されます。
# ls -l /mail/(ドメイン)/(@前)/new/
を見てみると、
-rw------- 1 vuser vuser 509 XXX XX XX:XX XXXXXX.XXXXXX.XXX.XXXXX.XXX
とメールが到着しているのが確認されました。
次回、POPなどの受信系を整備します。