ユーザ用ツール

サイト用ツール


01_linux:03_mail:04_postfix_mysql_postfix_admin

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
01_linux:03_mail:04_postfix_mysql_postfix_admin [2015/11/25 07:12] matsui01_linux:03_mail:04_postfix_mysql_postfix_admin [2016/12/08 03:25] (現在) matsui
行 1: 行 1:
 +====== 04 Postfix+MySQL+Postfix AdminでバーチャルSMTPサーバの構築 ======
  
 +===== 1. MySQL =====
 +
 +=== インストール ===
 +
 +<code>
 +# yum install mysql-server 
 +# chkconfig mysqld on 
 +# service mysqld start 
 +</code>
 +
 +=== Postfix用のデータベース作成 ===
 +<code>
 +# mysql 
 +mysql> create database postfix; 
 +mysql> grant all privileges on postfix.* to postfix@localhost identified by 'xxpostfix';
 +</code>
 +
 +===== 2. Postfix =====
 +<color blue>バーチャルに対応する為、パッチをあて再構築</color>
 +
 +=== インストール ===
 +
 +<code>
 +# cd /usr/local/src 
 +# wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.4/os/SRPMS/postfix-2.3.3-2.1.el5_2.src.rpm 
 +# mkdir -p /usr/src/redhat/SOURCES 
 +# rpm -ivh postfix-2.3.3-2.1.el5_2.src.rpm 
 +# cd /usr/src/redhat/SOURCES 
 +# wget http://vda.sourceforge.net/VDA/postfix-2.3.3-vda.patch.gz 
 +# gunzip postfix-2.3.3-vda.patch.gz 
 +# wget http://k2net.hakuba.jp/pub/postfix-sleep.patch
 +# cd /usr/src/redhat/SPECS/ 
 +# cp postfix.spec postfix.spec.old 
 +# vi postfix.spec 
 +------- 変更と追加 ------- 
 +2 %define MYSQL 0 
 +     ↓ 
 +2 %define MYSQL 1 
 +
 +84 Patch11: postfix-2.3.3-vda.patch 
 +85 Patch12: postfix-sleep.patch 
 +
 +141 %patch11 -p1 -b .vda 
 +142 %patch12 -p1 -b .sleep 
 +
 +# yum -y install pkgconfig rpm-build db4-devel zlib-devel openldap-devel cyrus-sasl-devel pcre-devel mysql-devel openssl-devel 
 +# mkdir -p /usr/src/redhat/BUILD 
 +# mkdir -p /usr/src/redhat/SRPMS 
 +# mkdir -p /usr/src/redhat/RPMS/x86_64 
 +# rpmbuild -ba postfix.spec
 +
 +#rpm -Uhv /usr/src/redhat/RPMS/x86_64/postfix-2.3.3-2.1.x86_64.rpm
 +</code>
 +
 +=== yumの設定でpostfixを除外しておく ===
 +<code>
 +# vi /etc/yum.conf 
 +--------- 最後に追加 ------------- 
 +exclude=postfix* 
 +</code>
 +
 +=== chkconfig ===
 +
 +<code>
 +# chkconfig postfix on 
 +</code>
 +
 +=== main.cfの作成 ===
 +
 +<code>
 +# vi /etc/postfix/main.cf 
 +    70 myhostname = test.flateight.com 
 +    92 myorigin = $myhostname 
 +   107 #inet_interfaces = all 
 +   109 inet_interfaces = $myhostname, localhost 
 +   155 #mydestination = $myhostname, localhost.$mydomain, localhost 
 +   158 mydestination = 
 +   288 relay_domains = $mydestination 
 +   256 mynetworks = 168.100.189.0/28, 127.0.0.0/8, 174.143.151.0/24 
 +   411 home_mailbox = Maildir/ 
 +   563 smtpd_banner = $myhostname ESMTP unknown 
 +   637 sendmail_path = /usr/sbin/sendmail 
 +
 +---------- 追加 ---------- 
 +smtpd_sasl_auth_enable = yes 
 +smtpd_sasl_type = dovecot 
 +smtpd_sasl_path = private/auth 
 +smtpd_sasl_local_domain = $myhostname 
 +smtpd_recipient_restrictions = 
 +    permit_mynetworks 
 +    permit_sasl_authenticated 
 +    reject_unauth_destination 
 + 
 +message_size_limit = 10485760 
 + 
 +smtpd_use_tls = yes 
 +smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem 
 +smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem 
 +smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache 
 +tls_daemon_random_source = dev:/dev/urandom 
 + 
 +#virtual_mailbox_domains = /etc/postfix/vdomain 
 +#virtual_mailbox_base = /home/mail/vhosts 
 +#virtual_mailbox_maps = hash:/etc/postfix/vmailbox 
 +#virtual_minimum_uid = 100 
 +#virtual_uid_maps = static:12000 
 +#virtual_gid_maps = static:12000 
 +#virtual_alias_maps = hash:/etc/postfix/virtual 
 + 
 +local_transport = virtual 
 +virtual_transport = virtual 
 +virtual_mailbox_base = /home/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 
 +mailbox_size_limit = 51200000 
 +message_size_limit = 10240000 
 +virtual_mailbox_limit = 51200000 
 +virtual_mailbox_limit_maps = hash:/etc/postfix/vquota 
 +virtual_mailbox_limit_override = yes 
 +virtual_overquota_bounce = yes 
 +virtual_mailbox_limit_inbox = yes 
 +</code>
 +
 +=== procmailを利用する場合 ===
 +
 +[[01_linux:03_mail:06_postfix_virtual_procmail]]
 +
 +=== vquotaファイル作成 ===
 +ユーザやドメイン毎のメールボックスのサイズを指定(virtual_mailbox_limit以下で指定)
 +<code>
 +# vi /etc/postfix/vquota 
 +test1@mail.flateight.com   51200000
 +@test2.flateight.com         25600000
 +@mail2.flateight.com        12800000
 +</code>
 +
 +=== MySQL認証用ファイルを作成 ===
 +<code>
 +# vi /etc/postfix/mysql_virtual_alias_maps.cf 
 +user = postfix 
 +password = xxpostfix 
 +hosts = localhost 
 +dbname = postfix 
 +table = alias 
 +select_field = goto 
 +where_field = address 
 + 
 +#vi /etc/postfix/mysql_virtual_domains_maps.cf 
 +user = postfix 
 +password = xxpostfix 
 +hosts = localhost 
 +dbname = postfix 
 +table = domain 
 +select_field = domain 
 +where_field = domain 
 +additional_conditions = and active = '1' 
 +
 +# vi /etc/postfix/mysql_virtual_mailbox_maps.cf 
 +user = postfix 
 +password = xxpostfix 
 +hosts = localhost 
 +dbname = postfix 
 +table = mailbox 
 +select_field = maildir 
 +where_field = username 
 +</code>
 +
 +
 +=== MySQL用設定ファイル作成 ===
 +<code>
 +# vi /etc/dovecot-mysql.conf 
 +driver = mysql 
 +default_pass_scheme = PLAIN 
 +connect = dbname=postfix user=postfix host=/var/lib/mysql/mysql.sock password=xxpostfix 
 +password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1' 
 +user_query = SELECT concat('/home/mail/', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1' 
 +</code>
 +
 +
 +=== TLS セッションキャッシュマネージャの設定(master.cf の編集) コメントを外す ===
 +<code>
 +# vi /etc/postfix/master.cf 
 +submission inet n - n - - smtpd 
 + -o smtpd_enforce_tls=yes
 + -o smtpd_sasl_auth_enable=yes
 + -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 +smtps inet n - n - - smtpd 
 + -o smtpd_tls_wrappermode=yes
 + -o smtpd_sasl_auth_enable=yes
 + -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 +</code>
 +
 +===== 3. Dovecot =====
 +
 +=== インストール ===
 +<code>
 +# yum install dovecot 
 +</code>
 +
 +=== 証明書設定 ===
 +
 +<code>
 +# cd /etc/pki/tls/certs/ 
 +# make mail.pem 
 +# openssl x509 -in mail.pem -outform DER -out mail.der 
 +# cp /etc/dovecot.conf /etc/dovecot.conf.save 
 +# vi /etc/dovecot.conf 
 +listen = [::]
 +log_path = /var/log/dovecot.log
 +ssl_disable = no
 +ssl_cert_file = /etc/pki/tls/certs/mail.pem
 +ssl_key_file = /etc/pki/tls/certs/mail.pem
 +verbose_ssl = yes
 +mail_location = maildir:/home/mail/%d/%u
 +last_valid_uid = 10000
 +first_valid_gid = 10000
 +protocol imap {
 +}
 +  
 +protocol pop3 {
 +}
 +protocol lda {
 +  postmaster_address = postmaster@example.com
 +}
 +auth_verbose = yes
 +auth_debug = yes
 +auth_debug_passwords = yes
 +auth default {
 +  mechanisms = plain login digest-md5 cram-md5 apop
 +  passdb sql {
 +   args = /etc/dovecot-mysql.conf
 +  }
 + 
 +  userdb sql {
 +   args = /etc/dovecot-mysql.conf
 +  }
 + 
 + socket listen {
 +  client {
 +   path = /var/spool/postfix/private/auth
 +   mode = 0660
 +   user = postfix
 +   group = postfix
 +  }
 + }
 +  user = root
 +}
 +dict {
 +}
 +plugin {
 +}
 +</code>
 +
 +
 +=== 認証ライブラリのインストール ===
 +<code>
 +# yum -y install cyrus-sasl-md5 cyrus_sasl_sql cyrus-sasl-plain 
 +</code>
 +
 +
 +=== Apacheなどなどのインストール ===
 +
 +<code>
 +# yum install httpd 
 +# yum install php-mysql php-xml php-devel php-mbstring php-gd php-pear php-xmlrpc php-soap php-imap 
 +</code>
 +
 +=== chkconfig ===
 +
 +<code>
 +# chkconfig httpd on 
 +</code>
 +
 +=== スタート ===
 +
 +<code>
 +# service httpd start 
 +</code>
 +
 +
 +
 +===== 4. ファイアウォールの設定 =====
 +
 +=== 下記ポートを開ける ===
 +
 +<code>
 + 25
 +110
 +143
 +465 番  SMTP over SSL 
 +993 番  IMAP over SSL 
 +995 番  POP3 over SSL 
 +</code>
 +
 +
 +=== メールディレクトリを用意しておく ===
 +
 +<code>
 +# mkdir /home/mail 
 +# chown 10000 /home/mail 
 +</code>
 +
 +=== mailユーザ・グループの変更 ===
 +
 +mailユーザと、mailグループのIDを変更しておく。
 +<code>
 +# usermod -u 10000 -g 10000 mail
 +# groupmod -g 10000 mail
 +</code>
 +
 +
 +
 +===== 5. PostfixAdminインストール =====
 +
 +・ダウンロードURL http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin_2.3.tar.gz?use_mirror=jaist
 +
 +<code>
 +# cd /usr/local/src 
 +# wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin_2.3.tar.gz?use_mirror=jaist 
 +# tar zxvf postfixadmin_2.3.tar.gz 
 +# mv postfixadmin_2.3 /var/www/html/postfixadmin 
 +# cd /var/www/html/postfixadmin 
 +# vi config.inc.php 
 +    26 $CONF['configured'] = true; 
 +    43 $CONF['default_language'] = 'ja'; 
 +    49 $CONF['database_type'] = 'mysqli'; 
 +    50 $CONF['database_host'] = 'localhost'; 
 +    51 $CONF['database_user'] = 'postfixadmin'; 
 +    52 $CONF['database_password'] = 'hogehoge'; 
 +    53 $CONF['database_name'] = 'postfix'; 
 +   100 // $CONF['encrypt'] = 'md5crypt'; 
 +   101 $CONF['encrypt'] = 'cleartext'; 
 +   130 $CONF['page_size'] = '100'; 
 +   158 $CONF['mailboxes'] = '100'; 
 +   159 $CONF['maxquota'] = '300'; 
 +</code>
 +
 +=== URLからアクセス ===
 +
 +  http://[アドレス]/postfixadmin/setup.php 
 +
 +全部OKになっていればOKです。
 +
 +setupパスワードを入力し、表示されたsetup_passwordを
 +config.inc.phpに入力する。
 +    ↓
 +管理者IDを作成する。
 +
 +=== setup.phpを削除 ===
 +
 +<code>
 +# rm /var/www/html/postfixadmin/setup.php 
 +</code>
 +
 +=== URLからアクセス ===
 +
 +  http://[アドレス]/postfixadmin
 +
 +Web上からpostmaster宛とroot宛を転送するように設定。
 +
 +
 +
 +===== エラー =====
 +
 +=== ◆user unknown ===
 +
 +  Info: auth(default): passwd(hogehoge@flateight.com,::ffff:59.106.13.38): unknown user
 +=== 対処 ===
 +
 +これがあると、passwd認証をしようとするが、当然無いのでunknown userとなってしまう。
 +dovecot.confの「auth default」内のpassdb passudをコメントアウトしてやる。
 +<code>
 +# vi /etc/dovecot.conf 
 +auth default {
 + #userdb passwd {
 + #}
 +}
 +</code>
 +
 +=== ◆pam_authenticate() failed: ===
 +
 +  auth(default): pam(hogehoge@flateight.com,::ffff:59.106.13.38): pam_authenticate() failed: User not known to the underlying authentication module
 +}
 +
 +=== 対処 ===
 +
 +
 +これがあると、まずpam認証を行ってうが当然認証できないので、エラーになってしまう。
 +dovecot.confの「auth default」内のpassdb pamをコメントアウトしてやる。
 +<code>
 +# vi /etc/dovecot.conf 
 +auth default {
 + #passdb pam {
 + #}
 +}
 +</code>
 +
 +
 +===== postfix master.cfの説明 =====
 +
 +  smtpd_enforce_tls=yes 
 +
 +デフォルト: no
 +SMTP クライアントに TLS 暗号化を強制する。
 +
 +  smtpd_sasl_auth_enable=yes 
 +
 +デフォルト: no
 +SMTP Auth (SASL による) を有効にする。
 +
 +  smtpd_client_restrictions= 
 +
 +デフォルト: empty
 +SMTP クライアントが smtpd デーモンにアクセスするときの、アクセス制限設定。
 +記述順にパラメータ値(アクセス制限)が評価される。最後は permit (許可) になる。
 +基本的な書き方としては、 permit_ を書き、最後に reject を書く。
 +(全部ふさいで一部分開くポリシー)
 +パラメータ値は、カンマかスペースで区切る。
 +
 +長くなる場合は、次の行の先頭にスペースを入れることで、行が継続される。
 +例えば
 +
 +  smtpd_client_restrictions=permit_sasl_authenticated,reject 
 +
 +SMTP Auth で認証が確認された接続を許可。 それ以外は接続を拒否する。(デフォルト: 554)
 +
 +
 +{{tag>postfix dovecot mysql}}