Postfix + Dovecot + PostfixAdmin(PostgreSQL) インストール
概要
以前の記事「Postfix + Dovecot + PostfixAdmin(MySQL) インストール」で、DBをMySQLを利用してPostfixadminをインストールする方法を紹介しました。今回は、同じDBでもMySQLを利用せずPostgreSQLを利用した場合のインストール方法を紹介します。OSはCentOS 6.8で動作確認しています。
作業内容(Postfix)
- 必要なパッケージインストール
- PostgreSQLの設定
- バーチャルユーザー作成
- 設定ファイル編集
- MTA切替
作業内容(Dovecot)
- 設定ファイル編集
- 自動起動及びサービス起動
作業内容(PostfixAdmin)
- パッケージダウンロード及び解凍
- 設定ファイル編集
- Apacheの設定等
Postfix
必要なパッケージインストール
postfix, php, postgresqkなどを必要なパッケージをyumでインストールします
# yum install postfix httpd # yum install php php-pgsql php-mbstring php-imap postgresql-server # yum install cyrus-sasl-plain cyrus-sasl-md5 # yum install dovecot
PostgreSQLの設定
DBを初期化します
# su postgres - $ initdb -D /var/lib/pgsql/data $ exit
PostgreSQLを起動及び自動起動の設定をします
# /etc/rc.d/init.d/postgresql start # chkconfig postgresql on
postgresのパスワード設定を設定します。下記の設定ではパスワードはpost693gresと設定しています
# su - postgres $ psql postgres=# alter user postgres with password 'post693gres'; postgres=# select usename,passwd from pg_shadow; postgres=# \q $ exit
postfixadminで利用するDBを作成します。ユーザーは「postfixadmin」、DB名は「postfixadmin」、パスワードは「post439ad」とします
# su - postgres $ psql postgres=# CREATE ROLE postfixadmin WITH LOGIN PASSWORD 'post439ad'; postgres=# CREATE DATABASE postfixadmin OWNER postfixadmin ENCODING 'UTF8'; postgres=# \q $ exit
バーチャルユーザー作成
「vuser」というバーチャルユーザーを作成し、バーチャル用のメールディレクトリ(/home/vmailbox)をパーミッションなどの設定をします。
# mkdir /home/vmailbox # groupadd -g 600 vuser # useradd -g vuser -u 600 -d /home/vmailbox -s /sbin/nologin vuser # chown vuser:vuser /home/vmailbox # chmod 771 /home/vmailbox
設定ファイル編集
Postfixの設定ファイルの設定をしていきます。
主に設定するのはドメインやメールディレクトリなどの初期設定、SMTP-Authに関する設定、virtual domainsの設定、メールボックスサイズ制限 などです。メールボックスは無制限に設定しています
# cp -p /etc/postfix/main.cf /etc/postfix/main.cf.org # vi /etc/postfix/main.cf myhostname = mail.example.com mydomain = example.com myorigin = $myhostname inet_interfaces = all mydestination = home_mailbox = Maildir/ smtpd_banner = $myhostname ESMTP unknown # SMTP-Authに関する設定 smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_local_domain = $mydomain smtpd_client_restrictions = reject_rbl_client bl.spamcop.net smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes # virtual domains virtual_transport = virtual virtual_mailbox_base = /home/vmailbox virtual_alias_maps = pgsql:/etc/postfix/pgsql_virtual_alias_maps.cf virtual_alias_domains = $virtual_alias_maps virtual_mailbox_domains = pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf virtual_mailbox_maps = pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf # 事前準備で用意したユーザID,グループID virtual_minimum_uid = 600 virtual_uid_maps = static:600 virtual_gid_maps = static:600 message_size_limit = 102400000 mailbox_size_limit = 102400000 # メールボックスサイズ制限 virtual_mailbox_limit = 0 virtual_mailbox_limit_maps = pgsql:/etc/postfix/pgsql_virtual_mailbox_limit_maps.cf virtual_mailbox_limit_override = yes virtual_overquota_bounce = yes
main.cfから外部参照しているファイルを設定していきます
# vi /etc/postfix/pgsql_virtual_alias_maps.cf user = postfixadmin password = post439ad hosts = localhost dbname = postfixadmin table = alias select_field = goto where_field = address # vi /etc/postfix/pgsql_virtual_domains_maps.cf user = postfixadmin password = post439ad hosts = localhost dbname = postfixadmin table = domain select_field = domain where_field = domain # vi /etc/postfix/pgsql_virtual_mailbox_maps.cf user = postfixadmin password = post439ad hosts = localhost dbname = postfixadmin table = mailbox select_field = maildir where_field = username # vi /etc/postfix/pgsql_virtual_mailbox_limit_maps.cf user = postfixadmin password = post439ad hosts = localhost dbname = postfixadmin table = mailbox select_field = quota where_field = username
Submissionポート(587)設定するので、master.cfを変更します
# vi /etc/postfix/master.cf smtp inet n - n - - smtpd #submission inet n - n - - smtpd # -o smtpd_enforce_tls=yes # -o smtpd_sasl_auth_enable=yes # ↓↓↓ コメントアウトを外して以下に変更 ↓↓↓ smtp inet n - n - - smtpd submission inet n - n - - smtpd # -o smtpd_enforce_tls=yes # -o smtpd_sasl_auth_enable=yes
MTA切替
sendmailの自動起動の削除及びMTAの切替をおこないます。Postfixが標準のMTAの場合は設定は不要です
# /etc/rc.d/init.d/sendmail stop # chkconfig sendmail off # alternatives --config mta 選択 コマンド ----------------------------------------------- *+ 1 /usr/sbin/sendmail.sendmail 2 /usr/sbin/sendmail.postfix
Dovecot 2.x
Dovecot 2.x の設定ファイルを編集していきます。Dovecot 1系と2系では設定ファイルの配置が違うので注意して下さい
使用するプロトコルは、pop3 imapで設定しています。使用する環境によって変更して下さい
# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.org # vi /etc/dovecot/dovecot.conf protocols = pop3 imap
10-mail.confの設定
# vi /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:/home/vmailbox/%d/%n first_valid_uid = 600 first_valid_gid = 600
pop3 imapのみ設定しても、Dovecot2系では、imaps,pop3sのポートがListenするので、「10-master.conf」の設定にimaps,pop3sのport 0を追加してデフォルトポートを起動しないようにする
# vim /etc/dovecot/conf.d/10-master.conf inet_listener imaps { port = 0 #port = 993 #ssl = yes } inet_listener pop3s { port = 0 #port = 995 #ssl = yes }
10-auth.confの認証関係の設定ファイル
# vim /etc/dovecot/conf.d/10-auth.conf auth_mechanisms = plain auth_mechanisms = plain login digest-md5 cram-md5 ※以下の行を有効にします !include auth-system.conf.ext !include auth-sql.conf.ext
SQL関係の設定をします
# vim /etc/dovecot/conf.d/auth-sql.conf.ext passdb sql { args = /etc/dovecot-sql.conf } auth_passdb = pgsql /usr/local/etc/dovecot-pgsql.conf
pop3関係の設定
# vim /etc/dovecot/conf.d/20-pop3.conf protocol pop3 { #pop3_uidl_format = %08Xu%08Xv pop3_uidl_format = %08Xu%08Xv # ←コメント削除 }
10-master.confの設定
# vi /etc/dovecot/conf.d/10-master.conf unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix }
SQL関係の設定をします
# vim /etc/dovecot/dovecot-sql.conf.ext driver = pgsql # Use "host= ... pass=foo#bar" if your password has '#' character connect = host=localhost dbname=postfixadmin user=postfixadmin password=postfixadmin password_query = SELECT userid AS username, domain, password \ FROM users WHERE userid = '%n' AND domain = '%d' user_query = SELECT home, uid, gid FROM users WHERE userid = '%n' AND domain = '%d' # For using doveadm -A: iterate_query = SELECT userid AS username, domain FROM users
自動起動及びサービス起動
postfix,Dovecotの起動及び自動起動の設定をおこないます
# /etc/rc.d/init.d/dovecot start # chkconfig dovecot on # /etc/rc.d/init.d/postfix start # chkconfig postfix on
PostfixAdmin
パッケージダウンロード及び解凍
postfixadminをダウンロードして、/var/www/htmlに展開します
# cd /usr/local/src # wget http://nchc.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin-3.0.tar.gz # tar xzvf postfixadmin-3.0.tar.gz # mv postfixadmin-3.0 /var/www/html/ # mv /var/www/html/postfixadmin-3.0/ /var/www/html/postfixadmin
設定ファイル編集
主に変更箇所のみ記載しています
# vi /var/www/html/postfixadmin/config.inc.php $CONF['setup_password'] = 'XXXXX'; 後から変更(後ほどのWebセットアップで生成されるハッシュ値を入力する) $CONF['configured'] = true; $CONF['default_language'] = 'ja'; $CONF['database_type'] = 'pgsql'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = 'post439ad'; $CONF['database_name'] = 'postfixadmin'; $CONF['encrypt'] = 'md5crypt'; $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO'; // Alias control for superadmins $CONF['alias_control'] = 'YES';
Apacheの設定はIP制限などの設定を以下のように設定しています。
Apacheの設定 # vi /etc/httpd/conf.d/postfixadmin.conf <Directory "/var/www/html/postfixadmin"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from 192.168.0 #ローカル経由のみ管理画面にアクセス可能 Apache再起動 # /etc/rc.d/init.d/httpd restart
GUIのセットアップは、WEBで情報が多数あるのでその情報を参考にする
ディスカッション
コメント一覧
まだ、コメントがありません