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」を利用。
  • [crayon]
    メールサーバ設定概要
    サーバアドレス:mail.offline-net.com
    サーバOS:CentOS6.6
    送信サーバ:Postfix(SMTP-Auth over SSL)
    受信サーバ:Dovecot(IMAPS,POP3S)
    [/crayon]

    [crayon]
    暗号化なし 暗号化あり
    プロトコル名 ポート番号 プロトコル名 ポート番号
    POP3 110 POP3s 995
    IMAP4 143 IMAP4s 993
    SMTP 25/587 SMTPs 465
    [/crayon]

    0.環境

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

    1.PostfixAdminの設定

    [crayon]
    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
    [/crayon]

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

    [crayon]
    $ sudo groupadd -g 5000 virtual
    $ sudo useradd -g 5000 -u 5000 virtual
    [/crayon]

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

    [crayon]
    mysql> create database postfix DEFAULT CHARACTER SET utf8;
    mysql> grant all privileges on postfix.* to postfix@localhost identified by “ユーザーのパスフレーズ”;
    mysql> flush privileges;
    mysql> exit;
    [/crayon]

    [crayon]
    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 が不足している場合はインストールします。
    [/crayon]

    2.Postfixの初期設定

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

    [crayon]
    $ 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
    [/crayon]

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

    [crayon]
    $ 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
    [/crayon]

    [crayon]
    $ 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’
    [/crayon]

    [crayon]
    $ 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
    [/crayon]

    [crayon]
    $ 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’
    [/crayon]

    3.SSL/TLSの設定

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

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

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

    [crayon]
    $ sudo sed -i ‘s/365/3650/g’ Makefile
    [/crayon]

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

    [crayon]
    $ sudo make mail.offline-net.com.crt
    [/crayon]

    [crayon]
    —(以下を入力)—————————
    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 []:<空エンター>
    [/crayon]

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

    [crayon]
    $ sudo openssl rsa -in mail.offline-net.com.key -out mail.offline-net.com.key

    —(以下を入力)—————————
    Enter pass phrase for server.key:1234(←表示されません)
    [/crayon]

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

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

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

    [crayon]
    $ sudo cp -p /etc/postfix/{main.cf,main.cf.ORG}
    $ sudo vi /etc/postfix/main.cf
    [/crayon]

    [crayon]
    # 以下コメントアウト
    #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
    [/crayon]

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

    [crayon]
    $ 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/
    [/crayon]

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

    [crayon]
    $ 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
    [/crayon]

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

    [crayon]
    $ sudo postmap /etc/postfix/access
    [/crayon]

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

    [crayon]
    $ sudo postfix check
    [/crayon]

    6.dovecot2の設定

    [crayon]
    $ sudo yum install dovecot dovecot-mysql cyrus-sasl
    [/crayon]

    [crayon]
    $ sudo cp -p /etc/dovecot/{dovecot.conf,dovecot.conf.ORG}
    $ sudo vi /etc/dovecot/dovecot.conf

    #以下変更
    #protocols = imap pop3 lmtp
     ↓
    protocols = imap pop3
    [/crayon]

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

    [crayon]
    $ 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
    }
    [/crayon]

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

    [crayon]
    $ 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
    [/crayon]

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

    [crayon]
    $ 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’
    [/crayon]

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

    [crayon]
    $ 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
    }
    }
    [/crayon]

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

    [crayon]
    $ 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
    }
    }
    [/crayon]

    認証方式の設定

    [crayon]
    $ sudo vi /etc/dovecot/conf.d/10-auth.conf

    #disable_plaintext_auth = yes

    disable_plaintext_auth = no

    auth_mechanisms = plain

    auth_mechanisms = plain login
    [/crayon]

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

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

    [crayon]
    $ 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 = 7.Dovecotログの設定

    [crayon]
    $ 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
    }
    [/crayon]

    最後自動起動の設定

    [crayon]
    $ sudo /sbin/chkconfig dovecot on
    $ sudo /sbin/chkconfig saslauthd on
    [/crayon]

    8.ClamAV設定

    [crayon]
    $ sudo yum install –enablerepo=epel clamd
    [/crayon]

    [crayon]
    $ sudo cp -p /etc/{clamd.conf,clamd.conf.ORG}
    $ sudo vi /etc/clamd.conf

    #User clam #コメントアウト
    [/crayon]

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

    [crayon]
    $ sudo sed -i ‘s/Example/#Example/g’ /etc/freshclam.conf
    $ sudo freshclam
    [/crayon]

    起動と自動起動設定

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

    9.ClamAVとPostfixの連携

    [crayon]
    $ sudo cp -p /etc/{clamd.conf,clamd.conf.ORG}
    $ sudo vi /etc/clamd.conf

    #TCPSocket 3310 #コメントアウト

    sudo /etc/init.d/clamd restart
    [/crayon]

    10.Amavised-new設定

    [crayon]
    $ sudo yum install –enablerepo=epel amavisd-new
    [/crayon]

    [crayon]
    $ 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 ],
    [/crayon]

    起動と自動起動設定

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

    11.SpamAssassin設定

    起動と自動起動設定

    [crayon]
    $ sudo /etc/init.d/spamassassin start
    $ sudo /sbin/chkconfig spamassassin on
    [/crayon]

    [crayon]
    $ 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
    [/crayon]

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

    [crayon]
    $ 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
    [/crayon]

    実行権限追加

    [crayon]
    $ sudo chmod +x spamassassin-update
    [/crayon]

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

    [crayon]
    $ ./spamassassin-update
    [/crayon]

    cronに登録する

    [crayon]
    $ sudo mv spamassassin-update /etc/cron.daily/
    [/crayon]

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

    [crayon]
    $ 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
    [/crayon]

    12.ログの設定(procmail)

    [crayon]
    $ sudo vi /etc/logrotate.d/procmail

    /home/virtual/procmail.log {
    missingok
    nocreate
    notifempty
    }
    [/crayon]

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

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

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

    [crayon]
    $ sudo mkdir /usr/local/bin/postfixadmin
    [/crayon]

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

    [crayon]
    $ 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
    [/crayon]

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

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

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

    [crayon]
    $ 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”
    [/crayon]

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

    [crayon]
    $ 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
    [/crayon]

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

    [crayon]
    $ 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
    [/crayon]

    実行権限追加

    [crayon]
    $ sudo chmod 0700 /usr/local/bin/postfixadmin/postfixadmin*
    [/crayon]

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

    [crayon]
    $ 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
    [/crayon]

    14.再起動して確認

    [crayon]
    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
    [/crayon]

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

    [crayon]
    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
    [/crayon]

    以上

    About yoshimasa

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

    コメントを残す

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください