DovecotやSMTP-Auth関連は、別記事に書きます。
環境
項目 | バージョン |
---|---|
CentOS | 7.3.1611 (Core) |
Postfix | 2.10.1-6 |
PostfixAdmin | 3.0.2 |
作業概要
- 標準のPostfixだとバーチャルメールボックスの制限(quota)が効かないのでsrc.rpmをダウンロードしてVDAパッチを当てます。
- 上記で作成したrpmをインストールします。
- PostfixのVirtualDomain設定をします。
- あくまでもVirtualDomainの簡易設定までです。
smtpd_...
関連の制御設定はしません。
- あくまでもVirtualDomainの簡易設定までです。
- DBはMariaDBを使用するため導入します。
- Postfix(PostfixAdmin)で使用するアカウントを作成します。
- ユーザーやメールボックスなどの管理はPostfixAdminを使用するため導入します。
- PostfixAdminはApache + PHPで動作させます。
- ApacheやPHPの設定は動作させるための最低限のものしかしません。
- PostfixAdminで新規アドレスを追加した時に送信される「ようこそメール」でメールの受信を確認します。
Postfix作業
Postfixソースダウンロード
(1) Postfixのsrc.rpmをダウンロードするのに yum-utils
をインストールします。
1 2 |
[root@localhost ~]# yum -y install yum-utils |
(2) postfixのsrc.rpmをダウンロードします。
1 2 |
[root@localhost ~]# yumdownloader postfix --source |
Postfixビルド
(1) postfixのsrc.rpmをインストールします。
1 2 3 4 5 6 7 |
[root@localhost ~]# rpm -ivh postfix-2.10.1-6.el7.src.rpm 更新中 / インストール中... 1:postfix-2:2.10.1-6.el7 ################################# [100%] 警告: ユーザー mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します (snip) |
(2) PostfixのバージョンにあったVDAパッチをダウンロードします。
1 2 3 |
[root@localhost ~]# cd rpmbuild/SOURCES/ [root@localhost SOURCES]# curl -L http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.1.patch -O |
(3) specファイルを修正します。
86
行目と 147
行目に Patch10
を追加しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@localhost SOURCES]# cd ../SPECS/ [root@localhost SPECS]# vi postfix.spec (snip) 79 # Patches 80 81 Patch1: postfix-2.10.0-config.patch (snip) 86 Patch10: postfix-vda-v13-2.10.1.patch (snip) 140 %prep 141 %setup -q 142 # Apply obligatory patches 143 %patch1 -p1 -b .config (snip) 147 %patch10 -p1 |
(4) ビルドに必要なパッケージをインストールします。
1 2 |
[root@localhost SPECS]# yum -y install rpm-build gcc patch libdb-devel zlib-devel openldap-devel cyrus-sasl-devel pcre-devel mysql-devel openssl-devel |
(5) postfixのrpmパッケージを作成します。
1 2 |
[root@localhost SPECS]# rpmbuild -bb postfix.spec |
VDA適応済みPostfixインストール
(1) Postfixをインストールします。
1 2 3 4 |
[root@localhost SPECS]# systemctl stop postfix [root@localhost SPECS]# cd ../RPMS/x86_64/ [root@localhost x86_64]# rpm -Uvh postfix-2.10.1-6.el7.centos.x86_64.rpm |
Postfix VirtualDomain設定
ユーザー作成
(1) バーチャルドメインで受信したメールの保存先で使用するユーザーを作成します。
1 2 3 |
[root@localhost x86_64]# groupadd -g 10000 vuser [root@localhost x86_64]# useradd -g vuser -u 10000 vuser |
Postfix設定
(1) VirtualDomainの設定をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[root@localhost ~]# vi /etc/postfix/main.cf myhostname = mx.example.com mydomain = example.com myorigin = $mydomain inet_interfaces = all inet_protocols = ipv4 mydestination = # PostfixAdmin Setting. local_transport = local virtual_transport = virtual virtual_mailbox_base = /home/vuser virtual_mailbox_limit = 0 virtual_minimum_uid = 10000 virtual_uid_maps = static:10000 virtual_gid_maps = static:10000 virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_mailbox_limit_maps = mysql:/etc/postfix/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 |
(2) MySQL接続用ファイルを作成します。
1 2 3 4 5 6 7 8 9 |
[root@localhost ~]# vi /etc/postfix/mysql_virtual_alias_maps.cf user = postfix password = password hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = '1' [root@localhost ~]# chmod 640 /etc/postfix/mysql_virtual_alias_maps.cf [root@localhost ~]# chgrp postfix /etc/postfix/mysql_virtual_alias_maps.cf |
1 2 3 4 5 6 7 8 9 |
[root@localhost ~]# vi /etc/postfix/mysql_virtual_domains_maps.cf user = postfix password = password hosts = localhost dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' [root@localhost ~]# chmod 640 /etc/postfix/mysql_virtual_domains_maps.cf [root@localhost ~]# chgrp postfix /etc/postfix/mysql_virtual_domains_maps.cf |
1 2 3 4 5 6 7 8 9 |
[root@localhost ~]# vi /etc/postfix/mysql_virtual_mailbox_maps.cf user = postfix password = password hosts = localhost dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' [root@localhost ~]# chmod 640 /etc/postfix/mysql_virtual_mailbox_maps.cf [root@localhost ~]# chgrp postfix /etc/postfix/mysql_virtual_mailbox_maps.cf |
1 2 3 4 5 6 7 8 9 |
[root@localhost ~]# vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf user = postfix password = password hosts = localhost dbname = postfix query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1' [root@localhost ~]# chmod 640 /etc/postfix/mysql_virtual_mailbox_limit_maps.cf [root@localhost ~]# chgrp postfix /etc/postfix/mysql_virtual_mailbox_limit_maps.cf |
Postfix再起動
(1) 設定ファイルの構文をチェックして問題なければPostfixを再起動します。
1 2 3 |
[root@localhost ~]# postfix check [root@localhost ~]# systemctl restart postfix |
MariaDB作業
MariaDBインストール
(1) MariaDBをインストールします。
1 2 |
[root@localhost ~]# yum -y install mariadb-server |
MariaDB設定
(1) MariaDBの設定をします。
1 2 3 4 5 6 7 8 9 |
[root@localhost ~]# vi /etc/my.cnf [mysqld] (snip) character-set-server = utf8 skip-character-set-client-handshak (snip) [mysql] default-character-set = utf8 |
MariaDB起動
(1) MariaDBを起動します。
1 2 3 |
[root@localhost ~]# systemctl start mariadb [root@localhost ~]# systemctl enable mariadb |
初期セキュリティ設定
(1) MariaDBの初期セキュリティ設定をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@localhost ~]# mysql_secure_installation (snip) Enter current password for root (enter for none): (snip) Set root password? [Y/n] Y New password: Re-enter new password: (snip) Remove anonymous users? [Y/n] Y (snip) Disallow root login remotely? [Y/n] Y (snip) Remove test database and access to it? [Y/n] Y (snip) Reload privilege tables now? [Y/n] Y (snip) Thanks for using MariaDB! |
Postfix(PostfixAdmin)用のDB作成
(1) Postfix(PostfixAdmin)で使うDBを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@localhost ~]# mysql -u root -p Enter password: (snip) MariaDB [(none)]> create database postfix; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant all privileges on postfix.* to postfix@localhost identified by 'password'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> quit Bye |
PostfixAdmin作業
関連パッケージのインストール
(1) PostfixAdminを動作させるためのパッケージをインストールします。
1 2 |
[root@localhost ~]# yum -y install httpd php php-mbstring php-mysql |
PHP設定
(1) phpのタイムゾーンを設定します。
1 2 3 4 |
[root@localhost ~]# vi /etc/php.ini (snip) date.timezone = 'Asia/Tokyo' |
PostfixAdminインストール
(1) PostfixAdminをダウンロードします。
1 2 |
[root@localhost ~]# curl -L https://sourceforge.net/projects/postfixadmin/files/latest/download -o postfixadmin-3.0.2.tar.gz |
(2) ダウンロードしたアーカイブを解凍してパーミッションを変更します。
1 2 3 4 |
[root@localhost ~]# tar zxvf postfixadmin-3.0.2.tar.gz -C /var/www/html/ [root@localhost html]# mv postfixadmin-3.0.2/ postfixadmin [root@localhost html]# find postfixadmin/ -exec chown apache.apache {} \; |
(3) PostfixAdminの設定を変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
[root@localhost html]# vi postfixadmin/config.inc.php (snip) //$CONF['configured'] = false; $CONF['configured'] = true; (snip) //$CONF['default_language'] = 'en'; $CONF['default_language'] = 'ja'; (snip) $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'password'; $CONF['database_name'] = 'postfix'; (snip) //$CONF['domain_in_mailbox'] = 'NO'; $CONF['domain_in_mailbox'] = 'YES'; (snip) //$CONF['aliases'] = '10'; $CONF['aliases'] = '0'; //$CONF['mailboxes'] = '10'; $CONF['mailboxes'] = '0'; //$CONF['maxquota'] = '10'; $CONF['maxquota'] = '0'; $CONF['domain_quota_default'] = '2048'; (snip) //$CONF['used_quotas'] = 'NO'; $CONF['used_quotas'] = 'YES'; (snip) $CONF['new_quota_table'] = 'YES'; (snip) |
Aapche起動
(1) Apacheを起動します。
1 2 3 4 5 |
[root@localhost html]# apachectl configtest Syntax OK [root@localhost html]# systemctl start httpd [root@localhost html]# systemctl enable httpd |
PostfixAdmin初期セットアップ
(1) 以下のURLへアクセスします。
URL |
---|
http://IP or FQDN/postfixadmin/setup.php |
(2) セットアップ用のパスワードを設定します。パスワードを入力して Generate password hash
をクリックします。
(3) PostfixAdminの設定ファイルに生成されたセットアップ用パスワードのハッシュ値を追記します。
1 2 3 4 5 6 |
[root@localhost html]# vi postfixadmin/config.inc.php (snip) //$CONF['setup_password'] = 'changeme'; $CONF['setup_password'] = 'b60674929725af871e8739e7aab43123:1404d0d48fcb265845fc1c60caa6da89a21e73de'; (snip) |
(4) Web画面に戻ってセットアップ用パスワードを入れて管理者アカウント情報を入力してから 管理者追加
をクリックします。
あとは、ドメインを作成して、アドレスを追加するときに ようこそメールの送信
にチェックいれて追加し、/home/vuser/ドメイン/ユーザー名/new
配下にメールが届いて入れば大丈夫です 🙂
>DovecotやSMTP-Auth関連は、別記事に書きます。
別記事はどこにあるのでしょうか(^^;)?
すみません、この時はおそらく後で書こうとしていたと思うんですが、忘れて書いてないようです…