MTA導入(途中)

これはさくらインターネットSMTPサーバーのカスタマイズ記録です。


<ホスト名変更>
・コマンドで

    hostname sudomain1.mydomain1.jp
    domainname mydomain1.jp

    vi /etc/sysconfig/network
    HOSTNAME=sudomain1.mydomain1.jp


<RPMforgeを追加する>
こちらのサイトを参考にさせて頂きました。
http://centoshome.seesaa.net/article/117329591.html

yum-prioritiesをインストールします。

    yum install yum-priorities

結果
    Installed: yum-priorities.noarch 0:1.1.16-13.el5.centos
    Complete!

リポジトリの設定ファイルを編集します。

    vi /etc/yum.repos.d/CentOS-Base.repo

    各セクションの先頭へ以下を記載します。
    priority=1

・EPEL、REMI、RPMforgeをインストールします。

EPEL

    cd /usr/local/src
    wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
    rpm -ivh epel-release-5-3.noarch.rpm

結果
    warning: epel-release-5-3.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6
    Preparing...                ########################################### [100%]
        package epel-release-5-3.noarch is already installed
    EPELはインストールされていました。感謝。
    vi /etc/yum.repos.d/epel.repo
    [epel]セクションへ以下を追記/変更します。
    priority=1
    enabled=0


RPMforge

    wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
    wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
    rpm -ihv rpmforge-release-0.3.6-1.el5.rf.i386.rpm
    rpm -import RPM-GPG-KEY.dag.txt
    vi /etc/yum.repos.d/rpmforge.repo
    [rpmforge]セクションへ以下を追記/変更します。
    priority=1
    enabled=0

REMI

    wget http://rpms.famillecollet.com/el5.i386/remi-release-5-7.el5.remi.noarch.rpm
    rpm -ihv remi-release-5-7.el5.remi.noarch.rpm
    vi /etc/yum.repos.d/remi.repo
    [remi]セクションへ以下を追記/変更します。
    priority=1
    enabled=0

パッケージの更新

    yum --enablerepo=epel,rpmforge,remi check-update

以下のようなメッセージが表示されたらyを選択します。
    Importing GPG key 0x00F97F56 "Remi Collet <RPMS@FamilleCollet.com>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
    Is this ok [y/N]:


apache-httpdのインストール>
・インストール

    yum install httpd

結果
    Installed: httpd.i386 0:2.2.3-22.el5.centos.2
    Complete!

・設定

    vi /etc/httpd/conf/httpd.conf
    以下を変更

↓変更
ServerName aa.bb.cc.dd

↓変更
ErrorLog logs/error.log

↓変更
CustomLog logs/access.log combined

↓行頭の#を削除する
NameVirtualHost *:80

↓バーチャルホストを設定する。
<VirtualHost *:80>
    ServerName worm
    ServerAdmin webmaster@mydomain1.jp
    DocumentRoot /var/www/html

    SetEnvIf Request_URI favicon.ico no-log

    ErrorLog logs/worm.default-error.log
    CustomLog logs/worm.default-access.log "combined" env=!no-log
    Alias /admin "/var/www/admin"
    <Directory "/var/www/admin">
        Options -Indexes
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    LogLevel debug
</VirtualHost>

↓ファイルの1番最後へ移動する。
#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf

・管理領域を認証で保護します。

    htpasswd -c /var/www/.htpasswd admin
    vi /var/www/admin/.htaccess
    以下を記述します。
    AuthType Basic
    AuthName "Password Required"
    AuthUserFile /var/www/.htpasswd
    AuthGroupFile /dev/null
    require valid-user

・起動します。

    /etc/init.d/httpd start

・サービスとして登録します。

    chkconfig --level 345 httpd on


mysqlのインストール>
・インストール

    yum install --enablerepo=epel,rpmforge,remi install mysql mysql-server

結果
    Installed: mysql.i386 0:5.1.37-1.el5.remi mysql-server.i386 0:5.1.37-1.el5.remi
    Dependency Installed: mysql-libs.i386 0:5.1.37-1.el5.remi mysqlclient15.i386 0:5.0.67-1.el5.remi perl-DBD-mysql.i386 0:4.012-1.el5.rf
    Complete!

文字コードエンコーディングの設定を行います。

    vi /etc/my.cnf
    セクション[mysqld]と[mysql]へ以下を記載します。
    default-character-set=utf8

mysqlサーバーを稼動します。

    /etc/init.d/mysqld start

・パスワードを設定します。

    mysqladmin -u root password 'secret'

・起動します。

    /etc/init.d/mysqld start

・サービスへ登録します。

    chkconfig mysqld on


phpmyadminのインストール>
mysqlの管理のためにphpmyadminを、phpmyadminを利用するためにphpをインストールします。

    yum --enablerepo=epel,rpmforge,remi install php phpmyadmin

結果
    Installed: php.i386 0:5.3.0-2.el5.remi.2 phpmyadmin.noarch 0:2.11.9.5-1.el5.rf
    Dependency Installed: php-cli.i386 0:5.3.0-2.el5.remi.2 php-common.i386 0:5.3.0-2.el5.remi.2 php-mysql.i386 0:5.3.0-2.el5.remi.2 php-pdo.i386 0:5.3.0-2.el5.remi.2 sqlite2.i386 0:2.8.17-2.el5.remi
    Complete!

php-mcryptをインストールします。

    yum --enablerepo=epel,rpmforge,remi install php-mcrypt

結果
    Installed: php-mcrypt.i386 0:5.3.0-2.el5.remi.2
    Dependency Installed: libmcrypt.i386 0:2.5.8-4.el5.centos
    Complete!

・設定ファイルを変更します。

    vi /etc/httpd/conf.d/phpmyadmin.conf
以下へ書き換えます。
    <Directory "/usr/share/phpmyadmin">
      Order Allow,Deny
      Allow from all
    </Directory>
    
    Alias /admin/phpmyadmin /usr/share/phpmyadmin

・設定ファイルを変更します。

    vi /usr/share/phpmyadmin/config.inc.php
    以下を変更します。
    $cfg['blowfish_secret'] = 'secret';


<postfixadminのインストール>
・以下のサイトからpostfixadminを取得する。

http://sourceforge.net/projects/postfixadmin/

    cd /usr/local/src
    wget http://ncu.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3rc7/postfixadmin_2.3rc7.tar.gz

・以下の場所に管理用ディレクトリを作成します。

    mkdir -p /var/www/admin && cd /var/www/admin

・そこへpostfixadminを展開する。

    tar zxvf /usr/local/src/postfixadmin_2.3rc7.tar.gz

ディレクトリ名が長いので別名を付ける。

    ln -s postfixadmin-2.3rc7 postfixadmin

・config.inc.phpを編集する。
以下を変更する。

$CONF['configured'] = true;
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'secret';
$CONF['database_name'] = 'postfix';
$CONF['admin_email'] = 'postmaster@mydomain1.jp';
$CONF['default_aliases'] = array (
    'abuse' => 'postmaster@mydomain1.jp',
    'hostmaster' => 'postmaster@mydomain1.jp',
    'postmaster' => 'postmaster@mydomain1.jp',
    'webmaster' => 'postmaster@mydomain1.jp'
);
$CONF['encrypt'] = 'cleartext';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['vacation_domain'] = 'autoreply.mydomain1.jp';
$CONF['footer_text'] = 'Return to sudomain1.mydomain1.jp';
$CONF['footer_link'] = 'http://sudomain1.mydomain1.jp';

・セットアップを行います。
postfixadminのsetupへアクセスしてセットアップを行います。

    http://aa.bb.cc.dd/admin/postfixadmin/setup.php

エラーが出たら対処します。
今回はphp-mbstringとphp-imapが見つからないとエラーが出ているのでそれらをインストールします。
    yum --enablerepo=epel,rpmforge,remi install php-mbstring php-imap
結果
    Installed: php-imap.i386 0:5.3.0-2.el5.remi.2 php-mbstring.i386 0:5.3.0-2.el5.remi.2
    Dependency Installed: libc-client.i386 0:2004g-2.2.1
    Complete!

再度URLへアクセスします。
問題がなければページの最下部に「Change setup password」とメッセージが表示されているのでそれに従ってパスワードを変更します。

問題がなければ「$CONF['setup_password']」の値が表示されるのでそれをconfig.inc.phpへ記載します。
また、ドメイン管理者のメールアドレスとそのパスワードを入力します。
問題がなければ以下のように表示されます。
管理者を追加しました。
(postfix@mydomain1.jp)

・一休み
ここまで設定できればpostfixadmin側の設定は終了です。


<SASLのインストール>
・インストールします。

    yum --enablerepo=epel,rpmforge,remi install cyrus-sasl
結果
Package cyrus-sasl-2.1.22-4.i386 already installed and latest version
Nothing to do

インストールされていました。

mysqlと接続するためのパッケージをインストールします。

    yum --enablerepo=epel,rpmforge,remi install cyrus-sasl-sql
結果
    Installed: cyrus-sasl-sql.i386 0:2.1.22-4
    Complete!

・設定ファイルを編集します。

    vi /usr/lib/sasl2/smtpd.conf
    以下へ変更します。
    pwcheck_method: auxprop
    auxprop_plugin: sql
    allowanonymouslogin: no
    allowplaintext: yes
    mech_list: plain login
    log_level: 3
    sql_engine: mysql
    sql_user: postfix
    sql_passwd: secret
    sql_hostnames: localhost
    sql_database: postfix
    sql_select: SELECT password FROM mailbox WHERE username='%u@%r' AND active='1'
    #sql_select: SELECT password FROM mailbox WHERE username='%s' AND active='1'
    sql_verbose: yes

・起動します。

    /etc/init.d/saslauthd start

・サービスへ登録します。

    chkconfig --level 345 saslauthd on


postfixのインストール>
yum --enablerepo=epel,rpmforge,remi install postfix
レポジトリーのpostfixmysqlに対応していません。
正しくは次のセクションの通り、自分でsrc.rpmをビルドしてインストールします。

結果
Installed: postfix.i386 2:2.3.3-2.1.el5_2
Complete!

・ユーザー/グループを追加します。

    groupadd -g 10000 vuser
    useradd -g vuser -u 10000 vuser -d /var/spool/virtual -s /bin/false
    chown vuser:vuser /var/spool/virtual
    chmod 771 /var/spool/virtual

・main.cfを変更します。
antispamのコメントで囲まれている箇所で指定しているファイルは空のファイルを作成してください。

    vi /etc/postfix/main.cf
	以下へ変更します。
    myhostname = subdomain1.mydomain1.jp
    mydomain = mydomain1.jp
    myorigin = $mydomain
    inet_interfaces = all
    mydestination = $myhostname,localhost.$mydomain
    mynetworks = 127.0.0.0/8
    disable_mime_output_conversion = yes
    
    ################################################################################
    # smth auth
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous
    broken_sasl_auth_clients = yes
    
    smtpd_recipient_restrictions =
      permit_sasl_authenticated,
      permit_mynetworks,
      reject_unauth_destination
    
    smtpd_sasl_local_domain = $myhostname,localhost.$mydomain
    smtpd_sasl_password_maps = mysql:/usr/lib/sasl2/smtpd.conf
    smdpd_sasl_type = cyrus
    
    # (start)antispam
    smtpd_client_restrictions =
      permit_mynetworks,
      check_client_access regexp:/etc/postfix/white-list.txt,
      check_client_access regexp:/etc/postfix/rejections
    
    smtpd_helo_required = yes
    
    smtpd_helo_restrictions =
      permit_mynetworks,
      reject_invalid_hostname,
      check_helo_access regexp:/etc/postfix/helo_restrictions
    
    smtpd_sender_restrictions =
      permit_mynetworks,
      reject_non_fqdn_sender,
      reject_unknown_sender_domain
    # (end)antispam
    
    ################################################################################
    readme_directory = /usr/share/doc/postfix-2.3.6/README_FILES
    sample_directory = /usr/share/doc/postfix-2.3.6/samples
    sendmail_path = /usr/sbin/sendmail
    html_directory = no
    
    setgid_group = postdrop
    command_directory = /usr/sbin
    manpage_directory = /usr/share/man
    daemon_directory = /usr/libexec/postfix
    newaliases_path = /usr/bin/newaliases
    
    mail_owner = postfix
    mailq_path = /usr/bin/mailq
    queue_directory = /var/spool/postfix
    unknown_local_recipient_reject_code = 450
    
    
    ################################################################################
    # virtual setting.
    local_transport = virtual
    virtual_transport = virtual
    virtual_mailbox_base = /var/spool/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 = 10000
    virtual_uid_maps = static:10000
    virtual_gid_maps = static:10000
    ################################################################################

    vi mysql_virtual_alias_maps.cf
    
    user = postfix
    password = secret
    hosts = localhost
    #hosts = /var/lib/mysql/mysql.sock
    dbname = postfix
    #table = alias
    #select_field = goto
    #where_field = address
    query = SELECT goto FROM alias WHERE address='%s'

    vi mysql_virtual_domains_maps.cf
    
    user = postfix
    password = secret
    hosts = localhost
    #hosts = /var/lib/mysql/mysql.sock
    dbname = postfix
    table = domain
    select_field = description
    where_field = domain

    vi mysql_virtual_mailbox_maps.cf
    
    user = postfix
    password = secret
    hosts = localhost
    #hosts = /var/lib/mysql/mysql.sock
    dbname = postfix
    table = mailbox
    select_field = maildir
    where_field = username

submission port(サブミッションポート)を有効にします。

    vi /etc/postfix/master.cf
    以下をコメントから復活させます。
    smtp      inet  n       -       n       -       -       smtpd
    submission inet n       -       n       -       -       smtpd
      -o smtpd_sasl_auth_enable=yes
      -o smtpd_client_restrictions=permit_sasl_authenticated,reject


・上記mysql&認証関連ファイルのパーミッションを変更します。

    chmod 644 /etc/postfix/mysql_virtual*

・エラー
ここまで設定したので動かしてみるとログファイルmaillogに以下のエラーがありました。
fatal: unsupported dictionary type: mysql

以下のコマンドでサポートされているか確認してみます。

	postconf -m
結果
    btree
    cidr
    environ
    hash
    ldap
    nis
    pcre
    proxy
    regexp
    static
    unix

サポートされていません。

仕方がないので自分でsrc.rpmからrpmをビルドすることにします。

・パッケージを作成する。
こちらのページを参考にしました。
http://www.kawaz.jp/pukiwiki/?Postfix%2FPostfix%A4%F2mysql%C2%D0%B1%FE%A4%CB%A4%B9%A4%EB

理研さんのサイトからsrc.rpmを取得します。

	wget http://ftp.riken.go.jp/Linux/centos/5.3/os/SRPMS/postfix-2.3.3-2.1.el5_2.src.rpm

インストールします。

	rpm -ihv postfix-2.3.3-2.1.rl5_2.src.rpm

SPECファイルを編集します。

	vi /usr/src/redhat/SPECS/postfix.spec
	以下の設定へ変更します。
	%define MYSQL 1

ビルドします。

	rpmbuild -ba /usr/src/redhat/SPECS/postfix.spec

結果
error: Failed build dependencies:
    db4-devel is needed by postfix-2.3.3-2.1.el5_2
    zlib-devel is needed by postfix-2.3.3-2.1.el5_2
    openldap-devel >= 2.0.27 is needed by postfix-2.3.3-2.1.el5_2
    cyrus-sasl-devel >= 2.1.10 is needed by postfix-2.3.3-2.1.el5_2
    pcre-devel is needed by postfix-2.3.3-2.1.el5_2
    mysql-devel is needed by postfix-2.3.3-2.1.el5_2
    postgresql is needed by postfix-2.3.3-2.1.el5_2
    postgresql-devel is needed by postfix-2.3.3-2.1.el5_2
    openssl-devel >= 0.9.6 is needed by postfix-2.3.3-2.1.el5_2

ビルドのためには色々足りないようです。

足りないパッケージをインストールします。
今回はPostgreSQLを使いませんがビルドのためにspecファイルを変更するのが嫌なので追加することにします。

	yum --enablerepo=epel.rpmforge,remi install db4-devel zlib-devel openldap-devel cyrus-sasl-devel pcre-devel mysql-devel postgresql postgresql-devel openssl-devel
結果
    Installed: cyrus-sasl-devel.i386 0:2.1.22-4 db4-devel.i386 0:4.3.29-9.fc6 mysql-devel.i386 0:5.1.37-1.el5.remi openldap-devel.i386 0:2.3.43-3.el5 openssl-devel.i386 0:0.9.8e-7.el5 pcre-devel.i386 0:6.6-2.el5_1.7 postgresql.i386 0:8.1.11-1.el5_1.1 postgresql-devel.i386 0:8.1.11-1.el5_1.1 zlib-devel.i386 0:1.2.3-3
    Dependency Installed: e2fsprogs-devel.i386 0:1.39-20.el5 keyutils-libs-devel.i386 0:1.2-1.el5 krb5-devel.i386 0:1.6.1-31.el5_3.3 libselinux-devel.i386 0:1.33.4-5.1.el5 libsepol-devel.i386 0:1.15.2-1.el5
    Complete!

もう一度ビルドします。

	rpmbuild -ba /usr/src/redhat/SPECS/postfix.spec
結果
Wrote: /usr/src/redhat/SRPMS/postfix-2.3.3-2.1.src.rpm
Wrote: /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/postfix-pflogsumm-2.3.3-2.1.i386.rpm
Wrote: /usr/src/redhat/RPMS/i386/postfix-debuginfo-2.3.3-2.1.i386.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.36141
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd postfix-2.3.3
+ /bin/rm -rf /var/tmp/postfix-buildroot
+ exit 0

なぜか四つのrpmができていますが名前のシンプルなpostfix-2.3.3-2.1.i386.rpmだけをインストールします。

	rpm -Uvh /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.1.i386.rpm
結果
rpm -Uvh /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.1.i386.rpm
Preparing...                ########################################### [100%]
        package postfix-2.3.3-2.1.el5_2.i386 (which is newer than postfix-2.3.3-2.1.i386) is already installed

同じバージョンなのでインストールできないようでうす。今のものを削除します。

rpm -e postfix
warning: /usr/lib/sasl2/smtpd.conf saved as /usr/lib/sasl2/smtpd.conf.rpmsave
warning: /etc/postfix/main.cf saved as /etc/postfix/main.cf.rpmsave

インストールします。

	rpm -Uvh /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.1.i386.rpm
結果
Preparing...                ########################################### [100%]
   1:postfix                ########################################### [100%]

mysqlに対応できているか確認します。

   postconf -m
結果
postconf -m
btree
cidr
environ
hash
ldap
mysql
nis
pcre
proxy
regexp
static
unix

作成したRPMがちゃんとmysqlに対応しているようです。

・起動
起動します。

    /etc/init.d/postfix start
結果
    Aug 26 22:38:05 localhost postfix/postfix-script: starting the Postfix mail system
Aug 26 22:38:05 localhost postfix/master[13788]: daemon started -- version 2.3.3, configuration /etc/postfix

問題ないようです。

・内部から外部へメールを送信して正しく届くか確認します。



<MTA切り替えツール>

    yum --enablerepo=epel,rpmforge,remi install system-switch-mail


SMTP認証の確認>
SMTP認証が正常に行えるか確認します。

・プレーンテキスト認証のための文字列を作成します。
コマンド

    $ perl -MMIME::Base64 -e 'print encode_base64("\0user1\@subdomain1.mydomain1.jp\0secret");'
結果
    AHVzZXIxQHN1YmRvbWFpbjEubXlkb21haW4xLmpwAHNlY3JldA==

これが文字列となります。

元文字列の部分は色々書き方があるようですが、私の環境では以下のフォーマットをBase64エンコーディングしたものとなっていました。
メールアドレスがuser1@subdomain1.mydomain1.jp、パスワードがsecretの場合は以下です。

    \0user1\@subdomain1.mydomain1.jp\0secret


一般的には下記のフォーマットが多いようです。

    user1\0subdomain1.mydomain1.jp\0secret


二つ目のフォーマットでは私の環境ではSMTP認証に失敗しました。
しかし、メーラーを利用するとSMTPの認証に成功するのでパケットをキャプチャして確認すると一つ目のフォーマットが想像できる文字列でした。


SMTP認証を行い、メールを送信します。

    $ telnet subdomain1.mydomain1.jp 587
    Trying aa.bb.cc.dd...
    Connected to subdomain1.mydomain1.jp (aa.bb.cc.dd).
    Escape character is '^]'.
    220 subdomain1.mydomain1.jp ESMTP Postfix
    EHLO subdomain2.mydomain2.jp
    250-subdomain1.mydomain1.jp
    250-PIPELINING
    250-SIZE 10240000
    250-VRFY
    250-ETRN
    250-AUTH PLAIN LOGIN
    250-AUTH=PLAIN LOGIN
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN
    AUTH PLAIN AHVzZXIxQHN1YmRvbWFpbjEubXlkb21haW4xLmpwAHNlY3JldA==
    235 2.0.0 Authentication successful
    MAIL FROM:user1@subdomain1.mydomain1.jp
    250 2.1.0 Ok
    RCPT TO:user2@subdomain2.mydomain2.jp
    250 2.1.5 Ok
    DATA
    354 End data with <CR><LF>.<CR><LF>
    Subje: test
    
    .
    250 2.0.0 Ok: queued as 9BB74C48043
    QUIT
    221 2.0.0 Bye
    Connection closed by foreign host.


dovecotのインストール>
・インストール

    yum --enablerepo=epel,rpmforge,remi install dovecot
結果
    Installed: dovecot.i386 0:1.0.7-7.el5
    Complete!

・設定ファイルの場所を変更します。
元のdovecotの設定ファイルは/etc直下に置かれています。
今回はmysqlを利用するためのファイルも作成するので、dovecot関連のファイルをまとめるためにディレクトリを作成します。

    mkdir /etc/dovecot
    mv /etc/dovecot.conf /etc/dovecot
    cd /etc/dovecot/
    cp dovecot.conf  dovecot.conf.org
    vi /etc/sysconfig/dovecot
    以下を変更します。
    OPTIONS="-c /etc/dovecot/dovecot.conf"


・設定ファイルを編集します。

    cat > dovecot.conf
    protocols = imap pop3
    login_chroot = yes
    login_user = dovecot
    ssl_disable = yes
    disable_plaintext_auth = no
    mail_location = maildir:/var/spool/virtual/%d/%n
    first_valid_uid = 1
    last_valid_uid = 0
    first_valid_gid = 1
    last_valid_gid = 0
    valid_chroot_dirs = /var/spool/virtual
    protocol imap {
    }
    protocol pop3 {
      pop3_uidl_format = %u
    }
    protocol lda {
      postmaster_address = postmaster@subdomain1.mydomain1.jp
    }
    auth default {
      mechanisms = plain
      passdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
      }
      userdb sql {
        args = /etc/dovecot/dovecot-mysql.conf
      }
      user = root
    }
    dict {
    }
    plugin {
    }

バーチャルホストのためのmysqlの設定ファイルを作成します。

    cat > /etc/dovecot/dovecot-mysql.conf 
    driver = mysql
    #connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=secret
    connect = host=aa.bb.cc.dd dbname=postfix user=postfix password=secret
    default_pass_scheme = PLAIN
    #user_query = SELECT concat('/var/spool/postfix', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1'
    user_query = SELECT '/var/spool/virtual' as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1'
    password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1'


・サービス起動スクリプトを変更します。

    vi /etc/init.d/dovecot
    以下を変更。
    /etc/dovecot.conf → /etc/dovecot/dovecot.conf

・ちなみに、以前利用していたdovecotの設定はこうなっています。

    cat /etc/dovecot.conf | perl -e 'while(<STDIN>){if(/^\s*#/ || /^\s*$/){next;}print;}'
    
    protocols = imap pop3
    login_chroot = yes
    login_user = dovecot
    ssl_disable = yes
    disable_plaintext_auth = no
    mail_location = maildir:/var/spool/virtual/%d/%n
    first_valid_uid = 1
    last_valid_uid = 0
    first_valid_gid = 1
    last_valid_gid = 0
    valid_chroot_dirs = /var/spool/virtual
    protocol imap {
    }
    protocol pop3 {
      pop3_uidl_format = %u
    }
    protocol lda {
      postmaster_address = postmaster@subdomain1.mydomain1.jp
    }
    auth default {
      mechanisms = plain
      passdb sql {
        args = /etc/dovecot-mysql.conf
      }
      userdb sql {
        args = /etc/dovecot-mysql.conf
      }
      user = root
    }
    dict {
    }
    plugin {
    }



yum -y --enablerepo=epel,rpmforge,remi install emacs
Installed: emacs.i386 0:21.4-20.el5
Dependency Installed: Xaw3d.i386 0:1.5E-10.1 emacs-common.i386 0:21.4-20.el5 giflib.i386 0:4.1.3-7.1.el5_3.1 xorg-x11-fonts-ISO8859-1-75dpi.noarch 0:7.1-2.1.el5
Complete!



yum --enablerepo=epel,rpmforge,remi install fetchmail
Installed: fetchmail.i386 0:6.3.6-1.1.el5
Complete!

echo fetchmailrc <<EOF
set daemon 600
set nobouncemail

defaults
protocol pop3
keep
no mimedecode
smtphost mail.mydns.jp
mda "/usr/bin/procmail"

poll mail.mydns.jp user user1 password secret
EOEF




yum --enablerepo=epel,rpmforge,remi install perl-DateTime-Format-DateParse
Installed: perl-DateTime-Format-DateParse.noarch 0:0.04-1.el5.rf
Dependency Installed: perl-Class-Singleton.i386 0:1.03-1.2.el5.rf perl-DateTime.i386 1:0.41-1.el5 perl-Params-Validate.i386 0:0.91-1.el5.rf perl-TimeDate.noarch 1:1.16-5.el5
Complete!


<ログ保存期間を伸ばす>
・ログの保存期間を延ばします。正確には保存するファイルの個数を増やします。

vi /etc/logrotate.conf
rotate 105

これは約2年分を貯められるログの個数です。
105≧365×2÷7


<hostsファイル>

vi /etc/hosts
変更
127.0.0.1               localhost.mydomain1.jp localhost

<リソース移行>
・/homeはroot以外にアクセスできないため、rootでもsshのログインを許可します。

vi /etc/ssh/sshd_config
以下へ変更します。
PermitRootLogin yes

・/homeのリソースをすべてコピーします。

コマンド

    rsync -e ssh -avzc root:ee.ff.gg.hh:/home/* /home 2>&1 | tee -a /home/sync.log

結果
    sent 418132 bytes  received 1255167085 bytes  1081934.70 bytes/sec
    total size is 1474302129  speedup is 1.17


オプションの意味は以下です。
-a: アーカイブモード。
-v: 冗長表示。
-z: 圧縮する。
-c: チェックサムを調べる。

パイプラインで標準出力をteeコマンドへ渡しているのはログを取るためです。



<パスワード生成>

yum --enablerepo=epel,rpmforge,remi install perl-String-Random

SSL

yum --enablerepo=epel,rpmforge,remi install mod_ssl
結果
Installed: mod_ssl.i386 1:2.2.3-22.el5.centos.2
Dependency Installed: distcache.i386 0:1.4.5-14.1
Complete!

rsync -e ssh -avzc ee.ff.gg.hh:/etc/httpd/conf ./

<WevDAV>
コマンド

yum --enablerepo=epel,rpmforge,remi install mod_dav_svn
結果
Installed: mod_dav_svn.i386 0:1.6.5-0.1.el5.rf
Updated: subversion.i386 0:1.6.5-0.1.el5.rf
Complete!

clamav
以下のサイトを参考にさせていただきました。感謝。
http://centossrv.com/clamav.shtml

・インストールします。

# yum --enablerepo=epel,rpmforge,remi install clamd
結果
Installed: clamd.i386 0:0.95.2-4.el5.rf
Dependency Installed: clamav.i386 0:0.95.2-4.el5.rf clamav-db.i386 0:0.95.2-4.el5.rf
Complete!

・サービスへ登録します。
コマンド

chkconfig clamd on

・動かします。
コマンド

# /etc/init.d/clamd start
結果
Starting Clam AntiVirus Daemon: LibClamAV Warning: **************************************************
LibClamAV Warning: ***  The virus database is older than 7 days!  ***
LibClamAV Warning: ***   Please update it as soon as possible.    ***
LibClamAV Warning: **************************************************

・ウイルスDBを更新します。
コマンド

# freshclam
結果
ClamAV update process started at Tue Sep  1 22:28:34 2009
main.cvd is up to date (version: 51, sigs: 545035, f-level: 42, builder: sven)
WARNING: getfile: daily-9451.cdiff not found on remote server (IP: 120.29.176.126)
WARNING: getpatch: Can't download daily-9451.cdiff from db.jp.clamav.net
Trying host db.jp.clamav.net (61.206.123.121)...
WARNING: getfile: daily-9451.cdiff not found on remote server (IP: 61.206.123.121)
WARNING: getpatch: Can't download daily-9451.cdiff from db.jp.clamav.net
Trying host db.jp.clamav.net (219.106.242.51)...
WARNING: getfile: daily-9451.cdiff not found on remote server (IP: 219.106.242.51)
WARNING: getpatch: Can't download daily-9451.cdiff from db.jp.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Trying host db.jp.clamav.net (219.94.128.99)...
Downloading daily.cvd [100%]
daily.cvd updated (version: 9763, sigs: 71572, f-level: 43, builder: ccordes)
Database updated (616607 signatures) from db.jp.clamav.net (IP: 219.94.128.99)
Clamd successfully notified about the update.

通常はcronで最新となっています。




完了
SSL移行
WebDAV移行


残り作業
postfix S25R導入
スパムフィルター導入
・アンチスパムソフト導入
MySQL移行