CentOS 6.6:メールサーバー構築 (バーチャルドメイン&スパムフィルター対応)

CentOS 6.6 内に、オープンソース「PostfixAdmin+Postfix+Dovecot2+ClamAV+SpamAssassin+Amavisd-new+SSL/TLS」構成にて、バーチャルドメイン&スパムフィルター対応のメールサーバーを構築します。(2015/06/28作成)

Postfix ulleo / Pixabay

◆構築要件

  • バーチャルドメインで運用。
  • アカウントは「PostfixAdmin」にて管理。
  • メールサーバーとの通信は「SSL/TLS」を利用。
  • アンチウィルス「ClamAV」、スパムフィルタ「SpamAssassin」を利用。
  • メールサーバ設定概要
    サーバアドレス:mail.offline-net.com
    サーバOS:CentOS6.6
    送信サーバ:Postfix(SMTP-Auth over SSL)
    受信サーバ:Dovecot(IMAPS,POP3S)
    
    暗号化なし	暗号化あり
    プロトコル名	ポート番号	プロトコル名	ポート番号
    POP3	110	POP3s	995
    IMAP4	143	IMAP4s	993
    SMTP	25/587	SMTPs	465
    

    0.環境

    $ cat /etc/redhat-release 
    CentOS release 6.6 (Final)
    

    1.PostfixAdminの設定

    Postfix Admin
    http://sourceforge.net/projects/postfixadmin/
    
    Download & install
    $ wget -O postfixadmin-2.92.tar.gz http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.92/postfixadmin-2.92.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpostfixadmin%2F&ts=1434964296&use_mirror=cznic
    $ tar zxvf postfixadmin-2.92.tar.gz
    $ sudo cp -rfp postfixadmin-2.92 /var/www/html
    $ sudo ln -s /var/www/html/postfixadmin-2.92/ /var/www/html/postfixadmin
    $ sudo chown daemon:daemon -R /var/www/html/postfixadmin-2.92 /var/www/html/postfixadmin
    $ sudo chown daemon:daemon -h /var/www/html/postfixadmin
    

    バーチャルドメインメールを保存する「ディレクトリ」「ユーザー」の作成します。

    $ sudo groupadd -g 5000 virtual
    $ sudo useradd -g 5000 -u 5000 virtual
    

    PostfixAdminで使用するDB、Userの作成、データベースを「postfix」ユーザーを「postfix」で作成します。

    mysql> create database postfix DEFAULT CHARACTER SET utf8;
    mysql> grant all privileges on postfix.* to postfix@localhost identified by "ユーザーのパスフレーズ";
    mysql> flush privileges;
    mysql> exit;
    
    PostfixAdminセットアップURL:
    http://セットアップサイト名/postfixadmin/setup.php
    -----
    Warning: Depends on: IMAP functions - NOT FOUND
    To install IMAP support, install php5-imap
    Without IMAP support, you won't be able to create subfolders when creating mailboxes.
    -----
    php-imap が不足している場合はインストールします。
    

    2.Postfixの初期設定

    下記コマンドで「mysql」と表示されているのでMySQLに対応していることが確認できます。

    $ sudo postconf -m btree cidr environ hash ldap mysql nis pcre proxy regexp static unix
    btree
    cidr
    environ
    hash
    ldap
    mysql
    nis
    pcre
    proxy
    regexp
    static
    unix
    

    PostfixからMySQLへアクセスする為のファイルを作成します。

    $ sudo vi /etc/postfix/mysql_virtual_alias_maps.cf
    
    user = postfix
    password = DBパスワード
    hosts = localhost
    dbname = postfix
    table = alias
    select_field = goto
    where_field = address
    
    $ sudo vi /etc/postfix/mysql_virtual_domains_maps.cf
    
    user = postfix
    password = DBパスワード
    hosts = localhost
    dbname = postfix
    table = domain
    select_field = domain
    where_field = domain
    additional_conditions = and active = '1'
    
    $ sudo vi /etc/postfix/mysql_virtual_mailbox_maps.cf
    
    user = postfix
    password = DBパスワード
    hosts = localhost
    dbname = postfix
    table = mailbox
    select_field = maildir
    where_field = username
    
    $ sudo vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
    
    user = postfix
    password = DBパスワード
    hosts = localhost
    dbname = postfix
    table = mailbox
    select_field = quota
    where_field = username
    #additional_conditions = and active = '1'
    

    3.SSL/TLSの設定

    サーバー用秘密鍵・自己証明書の作成(SSL/TLS用)

    $ cd /etc/pki/tls/certs
    $ sudo cp -p Makefile Makefile.ORG
    

    サーバー用証明書有効期限を1年から10年に変更

    $ sudo sed -i 's/365/3650/g' Makefile
    

    サーバー用秘密鍵・自己証明書の作成

    $ sudo make mail.offline-net.com.crt
    
    ---(以下を入力)---------------------------
    Enter pass phrase:1234(←表示されません)
    Verifying – Enter pass phrase:1234(←表示されません)
    Enter pass phrase for server.key:1234(←表示されません)
    Country Name (2 letter code) [GB]:JP
    State or Province Name (full name) [Berkshire]:<空エンター>
    Locality Name (eg, city) [Newbury]:<空エンター>
    Organization Name (eg, company) [My Company Ltd]:<空エンター>
    Organizational Unit Name (eg, section) []:<空エンター>
    Common Name (eg, your name or your server’s hostname) []:mail.offline-net.com
    Email Address []:<空エンター>
    

    サーバー用秘密鍵からパスワード削除

    $ sudo openssl rsa -in mail.offline-net.com.key -out mail.offline-net.com.key
    
    ---(以下を入力)---------------------------
    Enter pass phrase for server.key:1234(←表示されません)
    

    サーバー用秘密鍵の場所を変更

    $ sudo mv /etc/pki/tls/certs/mail.offline-net.com.key /etc/pki/tls/private/
    

    4.Postfixの設定ファイルを編集(main.cf)

    $ sudo cp -p /etc/postfix/{main.cf,main.cf.ORG} 
    $ sudo vi /etc/postfix/main.cf
    
    # 以下コメントアウト
    #inet_interfaces = localhost
    #inet_protocols = all
    #mydestination = $myhostname, localhost.$mydomain, localhost
    
    # 最終行に追加 
    myhostname = mail.offline-net.com # サーバーのホスト名
    inet_interfaces = all
    inet_protocols = ipv4
    mydestination = $myhostname, localhost 
    relay_domains = $mydestination 
    home_mailbox = Maildir/ 
    smtpd_banner = $myhostname ESMTP unknown 
     
    # Virtual Domain w/MySQL 
    local_transport = local
    virtual_transport = procmail # メールの配送はprocmail
     
    procmail_destination_recipient_limit = 1 
    virtual_mailbox_base = /home/virtual
    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 = 5000 
    virtual_uid_maps = static:5000 
    virtual_gid_maps = static:5000 
     
    maximal_backoff_time = 800s 
    minimal_backoff_time = 100s 
    bounce_queue_lifetime = 60m 
    maximal_queue_lifetime = 60m 
    message_size_limit = 20480000 
    #virtual_mailbox_limit = 51200000 
    virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf 
    virtual_mailbox_limit_override = yes
    virtual_overquota_bounce = yes
    virtual_mailbox_limit_inbox = yes
    # End Virtual Domain w/MySQL
    
    # SMTP-Auth 
    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 
    smtpd_sasl_security_options = noanonymous
    broken_sasl_auth_clients = yes
    # End SMTP-Auth
     
    # SpamAssasin + procmail
    mailbox_command = /usr/bin/procmail
    # End SpamAssasin + procmail
     
    # amavisd-new 
    content_filter=smtp-amavis:[127.0.0.1]:10024 
    # End amavisd-new 
    
    # TLS/SSL
    smtpd_use_tls = yes
    smtpd_tls_cert_file = /etc/pki/tls/certs/mail.offline-net.com.crt
    smtpd_tls_key_file = /etc/pki/tls/private/mail.offline-net.com.key
    smtpd_tls_loglevel = 1
    smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
    smtpd_tls_session_cache_timeout = 3600s
    smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination
    smtpd_tls_security_level = may
    smtpd_tls_auth_only      = yes
    # End TLS/SSL
    
    # Send TLS
    smtp_tls_security_level = may
    # End Send TLS
    

    新規ユーザーが追加されたらホームディレクトリに Mairdir/ を自動で作成されるようにします。

    $ sudo mkdir -p /etc/skel/Maildir/{new,cur,tmp}
    $ sudo mkdir -p /etc/skel/Maildir/.Spam/{new,cur,tmp} ※スパム専用メールボックス
    $ sudo chmod -R 700 /etc/skel/Maildir/
    

    5.Postfixの設定ファイルを編集(master.cf)

    $ sudo cp -p /etc/postfix/{master.cf,master.cf.ORG}
    $ sudo vi /etc/postfix/master.cf 
    
    #以下コメントアウトを解除 / smtps(SMTP-Auth over SSL)を有効化
    #smtps     inet  n       -       n       -       -       smtpd
    #  -o smtpd_tls_wrappermode=yes
    #  -o smtpd_sasl_auth_enable=yes
    #  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    
    #最終行に追加 
    # amavisd-new
    smtp-amavis unix -    -    n    -    2  smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o disable_dns_lookups=yes
    127.0.0.1:10025 inet n    -    n    -    -  smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
    # End amavisd-new
     
    # procmail
    procmail unix - n n - - pipe
      flags=R user=virtual argv=/usr/bin/procmail -t -m USER=${user} DOMAIN=${nexthop} /etc/procmailrc
    # End procmail
    

    ルックアップテーブルの作成

    $ sudo postmap /etc/postfix/access
    

    設定に誤りがないかチェック(なにも表示されなければOKです)

    $ sudo postfix check
    

    6.dovecot2の設定

    $ sudo yum install dovecot dovecot-mysql cyrus-sasl
    
    $ sudo cp -p /etc/dovecot/{dovecot.conf,dovecot.conf.ORG}
    $ sudo vi /etc/dovecot/dovecot.conf
    
    #以下変更
    #protocols = imap pop3 lmtp
     ↓
    protocols = imap pop3
    

    dovecot2の設定ファイルは「/etc/dovecot/dovecot.conf」であるが、「/etc/dovecot/conf.d/」直下に「.conf」ファイルを作成すれば自動読み込みされる。「00-base.conf」というファイルを作成し設定します。

    $ sudo vi /etc/dovecot/conf.d/00-base.conf
    
    # debug
    auth_debug_passwords = yes
    auth_verbose = yes
    auth_debug = yes
     
    listen = *
    disable_plaintext_auth = no
    auth_mechanisms = plain login digest-md5 cram-md5
     
    # mail dir
    mail_location = maildir:/home/virtual/%d/%u
    first_valid_uid = 5000
    first_valid_gid = 5000
    mail_plugins = quota
     
    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-postfixadmin-mysql.conf
    }
    userdb {
      driver = sql
      args = /etc/dovecot/dovecot-postfixadmin-mysql.conf
    }
    service auth {
      unix_listener /var/spool/postfix/private/auth {
        mode = 0666
      }
    }
    plugin {
      quota = maildir:User quota
    }
    

    次に「10-auth.conf」を編集します。

    $ sudo cp -p /etc/dovecot/conf.d/{10-auth.conf,10-auth.conf.ORG}
    $ sudo vi /etc/dovecot/conf.d/10-auth.conf
    
    #以下コメントアウト
    #auth_mechanisms = plain
    #!include auth-system.conf.ext
    

    次に「MySQLへの接続ファイル」を作成します。

    $ sudo vi /etc/dovecot/dovecot-postfixadmin-mysql.conf
    
    driver = mysql
    connect = host=localhost dbname=postfix user=postfix password=DBパスワード
    default_pass_scheme = MD5-CRYPT
    password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1'
    user_query = SELECT concat('/home/virtual/', maildir) AS home, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username = '%u' AND active = '1'
    

    バージョン1では protocols に「imaps」や「pop3s」と記述できたが、SSL/TLSを使うか否かは次の「10-master.conf」で設定します。

    $ sudo cp -p /etc/dovecot/conf.d/{10-master.conf,10-master.conf.ORG}
    $ sudo vi /etc/dovecot/conf.d/10-master.conf
    
    service imap-login {
      inet_listener imap {
        #port = 143
    	 ↓
        port = 0
      }
      inet_listener imaps {
        #port = 993
        #ssl = yes
    	 ↓
        port = 993
        ssl = yes
      }
    }
     
    service pop3-login {
      inet_listener pop3 {
        #port = 110
    	 ↓
        port = 0
      }
      inet_listener pop3s {
        #port = 995
        #ssl = yes
    	 ↓
        port = 995
        ssl = yes
      }
    }
    

    ※暗号化をしない imap と pop3 を使えないようにするため「port = 0」と設定する。Dovecot SASL ライブラリの認証ソケットファイルを指定する。

    $ sudo vi /etc/dovecot/conf.d/10-master.conf
    
    service auth {
      (略)
      # Postfix smtp-auth
      #unix_listener /var/spool/postfix/private/auth {
      #  mode = 0666
      #}
     ↓
      unix_listener /var/spool/postfix/private/auth {
        mode = 0660
        user = postfix
        group = postfix        
      }
    }
    

    認証方式の設定

    $ sudo vi /etc/dovecot/conf.d/10-auth.conf
    
    #disable_plaintext_auth = yes
     ↓
    disable_plaintext_auth = no
     
    auth_mechanisms = plain
     ↓
    auth_mechanisms = plain login
    

    ※平文パスワードを許可していますが、SSL/TLSで暗号化されますので問題ない。

    SSL/TLSの有効化とサーバ証明書と秘密鍵を指定

    $ sudo cp -p /etc/dovecot/conf.d/{10-ssl.conf,10-ssl.conf.ORG}
    $ sudo vi /etc/dovecot/conf.d/10-ssl.conf 
    
    #ssl = yes
     ↓
    ssl = yes
     
    #ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
    #ssl_key = </etc/pki/dovecot/private/dovecot.pem
     ↓
    ssl_cert = </etc/pki/tls/certs/mail.offline-net.com.crt
    ssl_key = </etc/pki/tls/private/mail.offline-net.com.key
    

    メールボックスの場所を指定

    $ sudo cp -p /etc/dovecot/conf.d/{10-mail.conf,10-mail.conf.ORG}
    $ sudo vi /etc/dovecot/conf.d/10-mail.conf
    
    #mail_location = 
     ↓
    mail_location = maildir:~/Maildir
    

    ログの出力先を変更

    $ sudo cp -p /etc/dovecot/conf.d/{10-logging.conf,10-logging.conf.ORG}
    $ sudo vi /etc/dovecot/conf.d/10-logging.conf
    
    #log_path = syslog
     ↓
    log_path = /var/log/dovecot/dovecot.log
    

    ログの出力先作成しておきます

    $ sudo mkdir /var/log/dovecot
    $ sudo /etc/init.d/dovecot restart
    

    認証ソケットファイルが作成されているのを確認します

    $ sudo ls -F /var/spool/postfix/private/auth
    ---(下記表示があればOK)---------------------------
    /var/spool/postfix/private/auth =
    

    7.Dovecotログの設定

    $ sudo vi /etc/logrotate.d/dovecot
    
    /var/log/dovecot/dovecot.log {
        daily
        missingok
        dateext
        rotate 60
        sharedscripts
        postrotate
            /bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null` 2> /dev/null || true
        endscript
    }
    

    最後自動起動の設定

    $ sudo /sbin/chkconfig dovecot on
    $ sudo /sbin/chkconfig saslauthd on
    

    8.ClamAV設定

    $ sudo yum install --enablerepo=epel clamd
    
    $ sudo cp -p /etc/{clamd.conf,clamd.conf.ORG} 
    $ sudo vi /etc/clamd.conf
    
    #User clam #コメントアウト
    

    ウイルス定義ファイル更新機能を有効化と、定義ファイルの更新します。

    $ sudo sed -i 's/Example/#Example/g' /etc/freshclam.conf
    $ sudo freshclam
    

    起動と自動起動設定

    $ sudo /etc/init.d/clamd start
    $ sudo /sbin/chkconfig clamd on
    

    9.ClamAVとPostfixの連携

    $ sudo cp -p /etc/{clamd.conf,clamd.conf.ORG}
    $ sudo vi /etc/clamd.conf
     
    #TCPSocket 3310 #コメントアウト
    
    sudo /etc/init.d/clamd restart
    

    10.Amavised-new設定

    $ sudo yum install --enablerepo=epel amavisd-new
    
    $ sudo cp -p /etc/amavisd/{amavisd.conf,amavisd.conf.ORG}
    $ sudo vi /etc/amavisd/amavisd.conf
    
    # COMMONLY ADJUSTED SETTINGS:
    $undecipherable_subject_tag = '';
    @bypass_spam_checks_maps  = (1);
    $mydomain = 'localdomain';
    
    #以下コメントアウト 
    #ウィルスメールは隔離しない設定
    #$QUARANTINEDIR = undef;      # -Q
    
    #以下コメントアウト 
    #ウィルス検知メールを管理者宛に通知しない
    #$virus_admin               = undef; # notifications recip.
     
    ### BLOCKED ANYWHERE
    # qr'^UNDECIPHERABLE$',  # is or contains any undecipherable components
    #以下コメントアウト(exeファイルを受信できるようにする)
    # qr'^\.(exe-ms|dll)$',                   # banned file(1) types, rudimentary 
    # qr'^\.(exe|lha|cab|dll)$',              # banned file(1) types
    
    # #   this entry; when running chrooted one may prefer a socket under $MYHOME.
    #以下追加、(/var/run/clamav/clamd.sockはソケット名変更)
    ['ClamAV-clamd',
      \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],
      qr/\bOK$/m, qr/\bFOUND$/m,
      qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
    

    起動と自動起動設定

    $ sudo /etc/init.d/amavisd start
    $ sudo /sbin/chkconfig amavisd on
    

    11.SpamAssassin設定

    起動と自動起動設定

    $ sudo /etc/init.d/spamassassin start
    $ sudo /sbin/chkconfig spamassassin on
    
    $ sudo cp -p /etc/mail/spamassassin/{v310.pre,v310.pre.ORG}
    $ sudo vi /etc/mail/spamassassin/v310.pre
    
    # TextCat - language guesser
    #以下コメントアウト解除 
    #loadplugin Mail::SpamAssassin::Plugin::TextCat
    

    rootユーザーでSpamAssassin設定ファイル最新化スクリプト作成

    $ pwd
    /var/tmp
    $ sudo vi spamassassin-update
    
    #!/bin/bash
    
    # SpamAssassin設定ファイル最新版ダウンロード
    cd /etc/mail/spamassassin
    wget -qN http://www.flcl.org/~yoh/user_prefs
    
    # 設定ファイル更新時のみSpamAssassin再起動
    diff user_prefs user_prefs.org > /dev/null 2>&1
    if [ $? -ne 0 ]; then
        cp user_prefs local.cf
    
        # スパム判断したメールを添付形式にしないように設定
        echo "report_safe 0" >> local.cf
    
        # スパム判断したメールの件名に「***SPAM***」を付加するように設定※受信メールサーバーがPOPの場合のみ
        echo "rewrite_header Subject ***SPAM***" >> local.cf
    
        # SpamAssassin再起動
        /etc/rc.d/init.d/spamassassin restart > /dev/null
    fi
    cp user_prefs user_prefs.org
    

    実行権限追加

    $ sudo chmod +x spamassassin-update
    

    一度実行して、最新にする

    $ ./spamassassin-update
    

    cronに登録する

    $ sudo mv spamassassin-update /etc/cron.daily/
    

    11.procmailの設定ファイルを新規作成する

    $ sudo vi /etc/procmailrc
    
    SHELL=/bin/bash
    PATH=/usr/bin:/bin
    MAILDIR=/home/virtual/$DOMAIN/$USER/Maildir
    DEFAULT=$MAILDIR/
    SPAM=$MAILDIR/.Spam/
    LOCKFILE=/home/virtual/procmail.lock
    LOGFILE=/home/virtual/procmail.log
    #VERBOSE=ON
    
    # SpamAssassin Spam Check
    :0fw
    |/usr/bin/spamc
    
    :0
    *^X-Spam-Flag: YES
    $SPAM
    

    12.ログの設定(procmail)

    $ sudo vi /etc/logrotate.d/procmail
    
    /home/virtual/procmail.log {
        missingok
        nocreate
        notifempty
    }
    

    13.メールディレクトリの自動作成・削除

    PostfixAdminを使ってアカウント追加・削除する際に、ディレクトリを自動で作成・削除するようにスクリプトを作成する。

    メールボックス作成・削除スクリプト用ディレクトリ作成

    $ sudo mkdir /usr/local/bin/postfixadmin
    

    PostfixAdminに有るスクリプトをコピー

    $ sudo cp -p /var/www/html/postfixadmin/ADDITIONS/postfixadmin-domain-postdeletion.sh /usr/local/bin/postfixadmin
    $ sudo cp -p /var/www/html/postfixadmin/ADDITIONS/postfixadmin-mailbox-postcreation.sh /usr/local/bin/postfixadmin
    $ sudo cp -p /var/www/html/postfixadmin/ADDITIONS/postfixadmin-mailbox-postdeletion.sh /usr/local/bin/postfixadmin
    

    削除したメールボックスを保存するディレクトリを作成

    $ sudo mkdir /home/virtual/.deleted-maildirs
    $ sudo chmod 0700 /home/virtual/.deleted-maildirs
    $ sudo chown virtual:virtual /home/virtual/.deleted-maildirs
    

    スクリプトの編集(メールボックス作成)

    $ sudo vi /usr/local/bin/postfixadmin/postfixadmin-mailbox-postcreation.sh
    
    #basedir=/var/spool/maildirs #←コメントアウト
    basedir=/home/virtual        #←追加
    
    #以下コメントアウト
    #maildirmake "$maildir"
    #if [ ! -d "$maildir" ]; then
    #    echo "$0: maildirmake didn't produce a directory; bailing out."
    #    exit 1
    #fi
    
    #以下exit 0の前に追加
    mkdir "$maildir"
    if [ ! -d "$maildir" ]; then
        echo "$0: mkdir didn't produce a directory; bailing out."
        exit 1
    fi
     
    mkdir "${maildir}cur"
    if [ ! -d "${maildir}cur" ]; then
        echo "$0: mkdir didn't produce a directory; bailing out."
        exit 1
    fi
     
    mkdir "${maildir}new"
    if [ ! -d "${maildir}new" ]; then
        echo "$0: mkdir didn't produce a directory; bailing out."
        exit 1
    fi
     
    mkdir "${maildir}tmp"
    if [ ! -d "${maildir}tmp" ]; then
        echo "$0: mkdir didn't produce a directory; bailing out."
        exit 1
    fi
    
    chown -R virtual:virtual "$maildir"
    chmod -R 700 "$maildir"
    

    スクリプトの編集(メールボックス削除)

    $ sudo vi /usr/local/bin/postfixadmin/postfixadmin-mailbox-postdeletion.sh
    
    #以下コメントアウト
    #basedir=/var/spool/maildirs
    #以下追加
    basedir=/home/virtual
    
    #以下コメントアウト
    #trashbase=/var/spool/deleted-maildirs
    #以下追加
    trashbase=/home/virtual/.deleted-maildirs
    
    #以下コメントアウト
    #subdir=`echo "$1" | sed 's/@.*//'`
    #以下追加
    subdir=$1
    

    スクリプトの編集(ドメイン削除用)

    $ sudo vi /usr/local/bin/postfixadmin/postfixadmin-domain-postdeletion.sh
    
    #basedir=/var/spool/maildirs
    basedir=/home/virtual
    
    #trashbase=/var/spool/deleted-maildirs
    trashbase=/home/virtual/.deleted-maildirs
    

    実行権限追加

    $ sudo chmod 0700 /usr/local/bin/postfixadmin/postfixadmin*
    

    daemon(httpd実行ユーザー)がsudo出来るように設定する

    $ sudo visudo
    
    Defaults    requiretty
    Defaults:daemon    !requiretty
    
    daemon ALL=(ALL) NOPASSWD: /usr/local/bin/postfixadmin/postfixadmin-mailbox-postcreation.sh 
    daemon ALL=(ALL) NOPASSWD: /usr/local/bin/postfixadmin/postfixadmin-mailbox-postdeletion.sh 
    daemon ALL=(ALL) NOPASSWD: /usr/local/bin/postfixadmin/postfixadmin-domain-postdeletion.sh 
    

    14.再起動して確認

    sudo /etc/init.d/saslauthd restart
    sudo /etc/init.d/postfix restart
    sudo /etc/init.d/dovecot restart
    sudo /etc/init.d/spamassassin restart
    sudo /etc/init.d/clamd restart
    sudo /etc/init.d/amavisd restart
    

    15.ファイヤーウォール開放ルール

    TCP	995	995	0.0.0.0/0	
    TCP	993	993	0.0.0.0/0	
    TCP	465	465	0.0.0.0/0
    TCP	25	25	0.0.0.0/0
    

    以上


    About yoshimasa

    埼玉県さいたま市在住、2男3女のパパです。Linux系の技術情報を中心にまとめています。1978年2月生まれ。