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

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

** 切り替え [#c9f94bb8]
+ smtproutesを記述して受付メールをすべて新サーバーに転送する
+ 旧サーバーのメールデータを新サーバーにSyncする
+ DNSレコードを切り替える

- 旧サーバー設定を変えて、メールを新サーバーに配送する設定にする。
-- smtproutes
 hutcraft.jp:newserver.hutcraft.jp
-- virtualhost で、該当ドメインをローカルに保存する設定を解除。このあとqmail-sendにHUPを送ると反映される。
 #hutcraft.jp:hutcraft.jp
-- これ以降旧サーバーにメールが届いたとしても旧サーバーに保存されることはなく、新サーバーに転送される。

- POP用のDNSレコードを新サーバーに向ける。
-- MTUは新サーバーにPOPしにいくようになる。
- MXレコードを新サーバーに向ける。

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

* インストールメモ [#z3d4dca9]
 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 [#o27c1a33]
- 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 [#z8a8f9a0]
 > 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 [#d9b8e8ad]
- 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 [#tf82c8b1]
- 以下のエラーが出る場合、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 [#j170bcf7]
 # 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

[ 編集 | 差分 | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]