ここでの説明では、いくつかのPerlスクリプトが使われています。 Perl 5.004_04以上のバージョンをインストールしてください。 Windows版Perlについては、下記URL等から入手可能ですので、ライセンス条項を確認した上でご利用ください。 http://www.activestate.com/Products/ActivePerl/ http://www.redhat.com/software/cygwin/ Windows NT版SendmailからWindows 2000版Post.Officeのアカウント移行では addacct.exeコマンドを用い、Sendmailのアカウントデータを移行します。 1. addacctコマンドでのアカウント移行方法 通常、Sendmailは C:\Program Files\Sendmailフォルダー下にメールボックス含めインストールされます。 アカウントデータはそのフォルダー下にあるsmusers.txtと呼ばれるファイルで管理され、その形式は、ほぼUNIX上での/etc/passwdファイルに準じています。 ここでの各操作は、Administratorアカウントで実行します。 (1) 一旦、smusers.txtファイルをC:\TEMP等の適当なフォルダーにコピーし、移行に不必要アカウントレコードがあれば、 エディターで事前に削除します。 (root行アカウントもすでにPost.Officeのインストール時点で作成されていれば、削除しておきます)。 (2) アカウントの登録は、付録-1のaddacct_bat.plスクリプトを使用します。 このaddacct_bat.plスクリプトでは、各アカウントのドメインパートを、 $domainName変数でセットします。 またユーザのパスワードに関しては、移行できないためパスワードファイルのユーザ名がセットされます。 もし、一時的に固定したパスワード文字列をセットする場合は、Passwordパラメータに直接、セットしてください。 ユーザの実名には、smusers.txtファイルの最初のユーザ名をセットするようになっていますが、gcos fieldをセットすることも可能です。 ただし、この場合、,;$ 等の特殊文字がないようにしてください。 ユーザの実名は重複しても構いませんが、POP-Address、SMTP-Addressの重複は許されませんし、英数字のみの文字列に限定されます。 addacct_bat.plスクリプトを用い、smusers.txtファイルのアカウントを移行します。 C:\TEMP> type smusers.txt | perl addacct_bat.pl 2. メールボックスの移行方法 sendmailのメールボックスは、デフォルトで C:\Program Files\Sendmail\spool\yamada フォルダーにアカウント名のファイルが作成され、 全ての保持されたメッセージはこの一つのファイルに保存されます。 各メッセージの先頭行は、From(:無し)行で始まります。 例. From foo.bar@opentech.co.jp Wed Mar 12 13:56:58 2003 一方、Post.Officeは、各メッセージを一つのファイルとして管理しています。 各アカウントのメールボックスフォルダー下に受信箱 (INBOX)であれば、inというフォルダーが作成されます。 メッセージはそのフォルダー下に Message-Id にもとづいたファイル名で作成されます。 ここで説明する方法は、実際に実行可能ですが、あくまでサンプルスクリプトとして説明します。 (1) 各アカウントのメールボックスをメッセージ単位に分割します。 付録-2のmigmbox.plスクリプトを用い、メッセージを展開します。 C:\TEMP> perl migmbox.pl C:\PROGRAM1\Sendmail\spool\yamada ここでC:\PROGRAM1\Sendmail\spool\yamadaは、アカウント yamadaのメールボックスファイルです。 スクリプトを実行するとyamadaというフォルダーがカレントフォルダー下に作成され、各メッセージが yamada-1.msg、yamada-2.msg、yamada-3.msg、.. という形式でファイル単位で作成されます。 (2) 各メッセージの移行は、Post.Officeのコマンドユーティリティであるpostmail.exeコマンドを使います。 もし、移行先が別マシンであれば、上で分割したメールボックスを予め移行先へコピーしておきます。 通常、/opt/post.office/others/postmail.exeとしてインストールされます。 このコマンドは、引数として与えられたSMTPメールアドレスへ標準入力から のメッセージをローカル配送することによって移行します。 sendmailのメールボックスをメッセージ単位に分割したフォルダー下で 1 C:\TEMP> for %B in (*.msg) do C:\PROGRAM1\Post.Office\others\postmail 2 "アカウントのSMTPアドレス" < %B 3 C:\TEMP> ( 実際には上の1行目と2行目は1行として入力してください ) 例: 1 C:\TEMP> cd yamada 2 C:\TEMP\yamada> for %B in (*.msg) do 3 C:\PROGRAM1\Post.Office\others\postmail yamada@opentech.co.jp < %B 4 C:\TEMP\yamada> ( 実際には上の2行目と3行目は1行として入力してください ) 全アカウントを対象とする場合は、Perlスクリプトにするか、Cygwinのシェルを導入するとよいでしょう。 以上でWindows NTからWindows 2000へのメールボックスを含むsendmailからのアカウント移行作業は完了です。 アカウントの移行では、事前にテストアカウントを作成し、メールボックスの内容や、 移行後のメール送受信が確認できるようにするとよいでしょう。 【注意】 移行後、ホスト名が変った場合、メーラー (MUA)によっては、移行後のメールボックスが今までと別のものであると判断し、 再度全メッセージをローカル(メーラー側) のメールボックスにコピー (受信)し直すことに注意してください。