yum remove postfix
yum install yum-utils wget rpm-build db4-devel zlib-devel openssl-devel make gcc-c++ sudo openldap-devel cyrus-sasl-devel pcre-devel mysql-devel cronie sysstat
groupadd -g 10000 vuser useradd -g vuser -u 10000 vuser mkdir /home/vuser/virtual chown vuser:vuser /home/vuser/virtual chmod 771 /home/vuser/virtual
rpm -ivh postfix-2.6.6-2.2.el6_1.src.rpm
cd /root/rpmbuild wget http://vda.sourceforge.net/VDA/postfix-2.6.5-vda-ng.patch.gz wget http://vda.sourceforge.net/VDA/postfix-2.6.5-vda-ng-bigquota.patch.gz gunzip postfix-2.6.5-vda-ng.patch.gz mv postfix-2.6.5-vda-ng.patch SOURCES/ cd SPECS/
(略) Release: 2.2_VDA%{?dist} Epoch: 3 (略) Patch10: postfix-2.6.6-CVE-2011-0411.patch Patch11: postfix-2.6.6-CVE-2011-1720.patch Patch12: postfix-2.6.5-vda-ng.patch Patch13: postfix-2.6.5-vda-ng-bigquota.patch (略) %patch10 -p1 -b .CVE-2011-0411 %patch11 -p1 -b .CVE-2011-1720 %patch12 -p1 -b .VDA %patch13 -p1 -b .vda-ng-bigquota (略)
rpmbuild -ba postfix.spec
cd ../RPMS/x86_64 rpm -ivh postfix-2.6.6-2.2_VDA.el6.x86_64.rpm
postconf|grep virtual_maildir_
exclude=postfix*
# サーバホスト名 #myhostname = host.domain.tld #myhostname = virtual.domain.tld myhostname = mail.example.com # 自ドメイン #mydomain = domain.tld mydomain = example.com # ドメイン省略時のドメイン #myorigin = $myhostname myorigin = $mydomain # SMTPを受け付ける帯域 inet_interfaces = all # どこからでも #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost #inet_interfaces = localhost # 送信専用となる # バックアップMTAのみ設定(NATアドレス・グローバルアドレスを指定) #proxy_interfaces = # 受信するドメイン(バーチャルドメインで指定されるので空で良い) #mydestination = $myhostname, localhost.$mydomain, localhost #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, # mail.$mydomain, www.$mydomain, ftp.$mydomain mydestination = # 信頼するネットワーク帯域(今回ではSMTP-auth無しでもリレーを受け付けるようになる) #mynetworks = 168.100.189.0/28, 127.0.0.0/8 #mynetworks = $config_directory/mynetworks #mynetworks = hash:/etc/postfix/network_table mynetworks = 127.0.0.0/8 # メールボックス形式 #home_mailbox = Mailbox home_mailbox = Maildir/ # 以下、ヴァーチャルドメインに関する設定を追記 # 基本的にunixユーザではなく、Postfix内部で仮想的に作ったユーザに配送する。 # メールの配送エージェント local_transport = local virtual_transport = virtual # メールボックスのパス virtual_mailbox_base = /home/vuser/virtual # エイリアスのリスト virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_alias_domains = $virtual_alias_maps # メールボックスやドメインのリスト virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf # メールを配送するUIDの最小値 virtual_minimum_uid = 10000 # ヴァーチャルメールのユーザIDやグループID virtual_uid_maps = static:10000 virtual_gid_maps = static:10000 # 以下、quotaに関する設定を追記 virtual_create_maildirsize = yes virtual_maildir_extended = yes virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf virtual_mailbox_limit_override = yes virtual_overquota_bounce = no virtual_trash_count = no # 以下、SMTP-authに関する設定を追記 smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_local_domain = $myhostname 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
user = postfix password = postfixdbpasswd hosts = localhost dbname = postfix table = alias select_field = goto where_field = address
user = postfix password = postfixdbpasswd hosts = localhost dbname = postfix table = domain select_field = domain where_field = domain
user = postfix password = postfixdbpasswd hosts = localhost dbname = postfix table = mailbox select_field = maildir where_field = username
user = postfix password = postfixdbpasswd hosts = localhost dbname = postfix table = mailbox select_field = quota where_field = username
submission inet n - n - - smtpd # -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING
yum install php-mysql php-imap
tar zxvf postfixadmin-2.3.6.tar.gz mv postfixadmin-2.3.65 /var/www/html/postfixadmin cd /var/www/html/postfixadmin
<?php // 設定済みフラグ $CONF['configured'] = true; // セットアップで使用するパスワード(ただし、後ほど書き直す必要がある) $CONF['setup_password'] = 'postfixadminpassword'; // postfixadminのログインページ(管理者向け) $CONF['postfix_admin_url'] = 'http://example.com/postfixadmin'; // 言語 $CONF['default_language'] = 'ja'; // MySQL DB $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; //$CONF['database_host'] = '192.168.0.2:3308'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'postfixdbpasswd'; $CONF['database_name'] = 'postfix'; // 管理者メールアドレス $CONF['admin_email'] = 'test@example.com'; // パスワードの暗号化方式 $CONF['encrypt'] = 'md5crypt'; // 1ページあたりのユーザ表示数 $CONF['page_size'] = '100'; // 各ドメインの標準エイリアス $CONF['default_aliases'] = array ( 'abuse' => 'abuse@change-this-to-your.domain.tld', 'hostmaster' => 'hostmaster@change-this-to-your.domain.tld', 'postmaster' => 'postmaster@change-this-to-your.domain.tld', 'webmaster' => 'webmaster@change-this-to-your.domain.tld' ); // メールボックスにドメイン名を付加 $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'YES'; // デフォルトのドメインに関する制限 $CONF['aliases'] = '100'; $CONF['mailboxes'] = '100'; $CONF['maxquota'] = '200'; // MB // クオータを強制する $CONF['quota'] = 'NO'; // Fetchmailタブを表示 $CONF['fetchmail'] = 'NO'; // ヘッダテキスト $CONF['show_header_text'] = 'NO'; $CONF['header_text'] = ':: Postfix Admin ::'; // 一般ユーザログイン時のフッタリンク $CONF['user_footer_link'] = "http://example.com/postfixadmin/main"; // フッタテキスト $CONF['show_footer_text'] = 'YES'; $CONF['footer_text'] = 'Postfix Admin Top'; $CONF['footer_link'] = 'http://example.com/postfixadmin/'; // メールボックスやエイリアス作成時にドメインをチェックする $CONF['emailcheck_resolve_domain']='NO'; // メールボックスやドメイン削除時のフォルダ削除スクリプト $CONF['mailbox_postdeletion_script'] = 'sudo -u vuser /home/vuser/virtual/bin/p ostfixadmin-mailbox-postdeletion.sh'; $CONF['domain_postdeletion_script'] = 'sudo -u vuser /home/vuser/virtual/bin/po stfixadmin-domain-postdeletion.sh'; ?>
mkdir /home/vuser/virtual/bin cp ADDITIONS/*.sh /home/vuser/virtual/bin chown -R vuser:vuser /home/vuser/virtual/bin chmod 700 /home/vuser/virtual/bin/*.sh mkdir /home/vuser/virtual/deleted-maildirs chown vuser:vuser /home/vuser/virtual/deleted-maildirs
#basedir=/var/spool/maildirs basedir=/home/vuser/virtual #trashbase=/var/spool/deleted-maildirs trashbase=/home/vuser/virtual/deleted-maildirs #subdir=`echo "$1" | sed 's/@.*//'` subdir=`echo "$1" | sed 's/@/\@/'`
#basedir=/var/spool/maildirs basedir=/home/vuser/virtual #trashbase=/var/spool/deleted-maildirs trashbase=/home/vuser/virtual/deleted-maildirs
#Defaults requiretty apache ALL=(vuser) NOPASSWD: /home/vuser/virtual/bin/*.sh
mv setup.php setup.php_
mv motd-users.txt motd-users.txt_
mv motd.txt motd.txt_
yum install dovecot dovecot-mysql
listen = *, :: disable_plaintext_auth = no auth_mechanisms = PLAIN LOGIN CRAM-MD5 mail_location = maildir:/home/vuser/virtual/%d/%n@%d first_valid_uid = 10000 first_valid_gid = 10000 mail_plugins = quota login_greeting = Dovecot ready. protocols = pop3 imap protocol imap { imap_client_workarounds = delay-newmail tb-extra-mailbox-sep mail_plugins = $mail_plugins imap_quota } protocol pop3 { pop3_client_workarounds = outlook-no-nuls oe-ns-eoh } passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 } } plugin { quota = maildir:User quota }
#!include auth-system.conf.ext
driver = mysql default_pass_scheme = MD5-CRYPT connect = dbname=postfix user=postfix host=/var/lib/mysql/mysql.sock password=postfixdbpasswd password_query = SELECT password FROM mailbox WHERE username = '%n\@%d' AND active = '1' user_query = SELECT concat('/home/vuser/virtual/', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%n\@%d' AND active = '1'
/etc/init.d/dovecot start chkconfig dovecot on
/etc/init.d/postfix start chkconfig postfix on
bounce_template_file = /etc/postfix/bounce.cf
cp /usr/share/doc/postfix-2.6.6/bounce.cf.default /etc/postfix/bounce.cf
message_size_limit = 20480000