ホスティング会社を変える時の、2台のサーバーを使って旧サーバーで運用しているMTAを新サーバーで運用するべく移行する、qmail+vpopmailを使ったメールサーバー移行手順メモ

事前準備

  • 移行先にqmail+vpopmailで環境を構築、vpopmail/domainsフォルダや、vpasswdファイルを参考にメールアカウントも移植する。.qmail-* も忘れずに移植しておく。
  • 移行先サーバー内でメールが受け取れることを確認しておく。ローカルサーバー宛に該当ドメインのアカウントにメール送ってみる。
  • 移行前にDNSレコードのTTLを短めに設定しておく。

切り替え

  1. smtproutesを記述して受付メールをすべて新サーバーに転送する
  2. 旧サーバーのメールデータを新サーバーにSyncする
  3. DNSレコードを切り替える
  • 旧サーバー設定を変えて、メールを新サーバーに配送する設定にする。
    • smtproutes
      hutcraft.jp:newserver.hutcraft.jp
    • virtualhost で、該当ドメインをローカルに保存する設定を解除。このあとqmail-sendにHUPを送ると反映される。
      #hutcraft.jp:hutcraft.jp
    • これ以降旧サーバーにメールが届いたとしても旧サーバーに保存されることはなく、新サーバーに転送される。
  • POP用のDNSレコードを新サーバーに向ける。
    • MTUは新サーバーにPOPしにいくようになる。
  • MXレコードを新サーバーに向ける。

切り替え後

  • 基本これで完了。TTLの生存期間を超えてるのに旧サーバーに通達してくるのもたまにいるけど、そういうのは大抵まっとうなMTAではない。
  • 切り替え中に旧サーバーにメールが保存された可能性がある場合、vpopmail/domains/ 以下のMaildirなりをrsyncなりで同期しちゃえ。新サーバーに保存される際のUID/GIDには気をつけて。

インストールメモ

groupadd -g 601 nofiles 
useradd -u 601 -g nofiles -d /var/qmail/alias -m -s /sbin/nologin alias
useradd -u 602 -g nofiles -d /var/qmail -M -s /sbin/nologin qmaild
useradd -u 603 -g nofiles -d /var/qmail -M -s /sbin/nologin qmaill
useradd -u 604 -g nofiles -d /var/qmail -M -s /sbin/nologin qmailp
groupadd -g 602 qmail
useradd -u 605 -g qmail -d /var/qmail -M -s /sbin/nologin qmailq
useradd -u 606 -g qmail -d /var/qmail -M -s /sbin/nologin qmailr
useradd -u 607 -g qmail -d /var/qmail -M -s /sbin/nologin qmails
groupadd -g 650 vchkpw
useradd -u 650 -g vchkpw -d /home/vpopmail -m  vpopmail

envdir

  • daemontoolsを使う
    > tar xfz daemontools-xx.tar.gz
    > cd admin
    > vi src/conf-ld  # <- --include=/usr/include/errno.h を追加
    > ./package/compile
    # cp command/envdir /usr/local/bin/envdir

relay-ctrl

> make
# ./install
# mkdir /var/spool/relay-ctrl
# chown vpopmail:vchkpw !$
# mkdir /var/qmail/etc
# echo /var/spool/relay-ctrl > /var/qmail/etc/RELAY_CTRL_DIR
# echo 300 > /var/qmail/etc/RELAY_CTRL_EXPIRY
# mkdir /var/spool/relay-ctrl
# chown vpopmail:vchkpw !$

ucspi-tcp

  • conf-cc でgccを指定
    > make
    # make setup check
    /usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in substdio.a(substdo.o)
    /lib64/libc.so.6: could not read symbols: Bad value
    collect2: ld はステータス 1 で終了しました

qmail

  • 以下のエラーが出る場合、conf-cc と conf-ld のコンパイラー設定でgccを使うように変更する
  • 64bit OSの場合 conf-ccを gcc -O2 --include /usr/include/errno.h にするとよいらしい。
    /usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in substdio.a(substdo.o)
    /lib64/libc.so.6: could not read symbols: Bad value
    collect2: ld はステータス 1 で終了しました
  • /var/qmail/control あたりをいい感じにしとく
  • /var/qmail/tcpserver
    # mkdir /var/qmail/tcpserver
    # cd !$
    # vi tcp.smtp
    xxx.xxx.xxx.xxx:allow,RELAYCLIENT="" # グローバルIPアドレスで許可
    127.:allow,RELAYCLIENT=""
    :allow
    # tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
  • /var/qmail/rc
    #!/bin/sh
    
    PATH="/var/qmail/bin:/usr/local/bin:$PATH"
    
    exec env - PATH="/var/qmail/bin:$PATH" \
        qmail-start ./Maildir/ splogger qmail &
    
    envdir /var/qmail/etc tcpserver -u qmaild -g nofiles -x /var/qmail/tcpserver/tcp.smtp.cdb 0 25 \
        relay-ctrl-check qmail-smtpd &
    
    envdir /var/qmail/etc tcpserver -u qmaild -g nofiles -x /var/qmail/tcpserver/tcp.smtp.cdb 0 587 \
        relay-ctrl-check qmail-smtpd &
    
    envdir /var/qmail/etc tcpserver 0 pop3 qmail-popup hutcraft.jp \
       /home/vpopmail/bin/vchkpw relay-ctrl-allow qmail-pop3d Maildir 2>&1 | splogger pop3d 4 &

vpopmail

# cd /home/vpopmail/etc
# touch tcp.smtp
# tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
 
# ./configure --enable-roaming-users=y --enable-relay-clear-minutes=10 --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp --enable-logging=y --enable-qmaildir=/var/qmail
# make
# make install

[ 編集 | 凍結 | 差分 | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]
Last-modified: 2011-05-09 (月) 17:23:15 (4735d)