- PR -

メールデータの移行について

1
投稿者投稿内容
p1582343
会議室デビュー日: 2004/09/11
投稿数: 3
投稿日時: 2004-09-11 21:34
はじめまして
現在UNIXベースで運用しているメールサーバをLINUXサーバにリプレースします。
移行時にユーザの未受信のメールも移行したいのですが、例えばhogeというユーザの
メールデータを移行するには/var/mail/hogeを新サーバにコピーすればいいのでしょうか。
(sendmail)
またその際、パーミッションとかはどうしたらいいのでしょうか?
新サーバにも当然hogeというユーザを作ります。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-09-12 00:27
こんばんわ.
引用:

p1582343さんの書き込み (2004-09-11 21:34) より:

はじめまして
現在UNIXベースで運用しているメールサーバをLINUXサーバにリプレースします。
移行時にユーザの未受信のメールも移行したいのですが、例えばhogeというユーザの
メールデータを移行するには/var/mail/hogeを新サーバにコピーすればいいのでしょうか。
(sendmail)


この場合に障壁になるのは sendmail などの MTA でなく,
MUA との interface である pop3 server とか imap server などの MRA のほうです.
「どのように e_mail を取り出し,MUA へ見せるのか?」な話です.
MTA が「UNIX の sendmail -> Linux の sendmail」であれば,
おそらく MRA も「sendmail な mbox 形式」に対応しているでしょう.
MTA が替わる場合は「mbox 形式か? Maildir 形式か?」が問題になるでしょう.

これらの段差を克服するなら,
「旧 server から新 server へ転送する」のがよいと思われます.
user account の数が多いと大変ですが,fetchmail が便利だったりします.
file として単に「もって行く」と,
ご認識のように permission の付け替えが一苦労ですが,
fetchmail で「MUA として取り込んで MTA に引き渡す」ようにすると,
あたかも「最初から MTA が受け取った」ように処理されます.
ただし,各 user account 毎に fetchmail のための .fetchmail を
各 user の home directory に配置してやる必要がありますが...
泥縄だし,そもそも home directory が作らない場合のが多いかな?

ちなみに,「一気に入れ替える」のが条件でしょうか?
そうでなければ「新旧を併設」しておいて,
「この日までに旧の e_mail を持っていってください」としておいて,
猶予期間を設けて新 server に切り替えるとか...

以上,あくまでもご参考までに.
p1582343
会議室デビュー日: 2004/09/11
投稿数: 3
投稿日時: 2004-09-12 00:48
こんばんわ.

書き込みありがとうございます。

------------------------------------------------
ちなみに,「一気に入れ替える」のが条件でしょうか?
そうでなければ「新旧を併設」しておいて,
「この日までに旧の e_mail を持っていってください」としておいて,
猶予期間を設けて新 server に切り替えるとか...
-----------------------------------------------

同一IPに移行(そうするに一気に入れ替え)を想定しています。
なので、就業後から移行直前までのデータを移してあげたいと思っています。

理想としては/var/mailのディレクトリごとざくっと移行できればいいのですが。。
ただ、この辺になると「メール」の話ではなくてLINUXのファイル操作の範囲ですね。
どうもパーミッションのあたりがうまく理解できなくて。。


kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-09-12 02:15
引用:

p1582343さんの書き込み (2004-09-12 00:48) より:

理想としては/var/mailのディレクトリごとざくっと移行できればいいのですが。。
ただ、この辺になると「メール」の話ではなくてLINUXのファイル操作の範囲ですね。
どうもパーミッションのあたりがうまく理解できなくて。。


そうですね.
結局「user account そのもの」は移行できても,
UID や password は困難な場合が多いようです.
Linux の場合,user-id は /etc/passwd のほかに,/etc/shadow も関係してます.
password を暗号化する場合は /etc/passwd ではなく
/etc/shadow に書き込まれるわけです.
なので,移行元の UNIX と Linux がともに同じ暗号化形式を用いているなら,
2つの file を Linux に持ってくれば良いかもしれません.
たぶん,でも自信ないです...
/etc/passwd に password が書き込まれている場合は,
pwconv を使うと良いみたいです.

なぜこれらの作業が必要かと言うと,
/var/mail/ の spool file の permission が絡みます.
user id には固有の「番号」が振られていて,
parmission を扱う際にそれらが用いられます.
※user group も同様です.
なので,spool file を permission ごと持ってきても,
その「番号」が一致しないと「違う user id だよ」と判断されてしまいます.

単に /etc/passwd などを持ってくればよいわけでなく,
home directory や shell なども確認する必要があるかもしれません.

要するに双方の環境に login して
# vipw
とした際に表示される「右から3番目」の数字が,
新旧の環境で一致してないと「違う user id」に見えてしまうわけです.
※password も同様のことが言えます.

なので,これらを考慮できれば「移行は可能」な話だったりします.
あとは MRA が参照するべき directory を確認したり,
や MTA の設定を移植してやったりすればよいと思われます.
p1582343
会議室デビュー日: 2004/09/11
投稿数: 3
投稿日時: 2004-09-22 18:21
引用:

kazさんの書き込み (2004-09-12 02:15) より:
引用:

p1582343さんの書き込み (2004-09-12 00:48) より:

理想としては/var/mailのディレクトリごとざくっと移行できればいいのですが。。
ただ、この辺になると「メール」の話ではなくてLINUXのファイル操作の範囲ですね。
どうもパーミッションのあたりがうまく理解できなくて。。


そうですね.
結局「user account そのもの」は移行できても,
UID や password は困難な場合が多いようです.
Linux の場合,user-id は /etc/passwd のほかに,/etc/shadow も関係してます.
password を暗号化する場合は /etc/passwd ではなく
/etc/shadow に書き込まれるわけです.
なので,移行元の UNIX と Linux がともに同じ暗号化形式を用いているなら,
2つの file を Linux に持ってくれば良いかもしれません.
たぶん,でも自信ないです...
/etc/passwd に password が書き込まれている場合は,
pwconv を使うと良いみたいです.

なぜこれらの作業が必要かと言うと,
/var/mail/ の spool file の permission が絡みます.
user id には固有の「番号」が振られていて,
parmission を扱う際にそれらが用いられます.
※user group も同様です.
なので,spool file を permission ごと持ってきても,
その「番号」が一致しないと「違う user id だよ」と判断されてしまいます.

単に /etc/passwd などを持ってくればよいわけでなく,
home directory や shell なども確認する必要があるかもしれません.

要するに双方の環境に login して
# vipw
とした際に表示される「右から3番目」の数字が,
新旧の環境で一致してないと「違う user id」に見えてしまうわけです.
※password も同様のことが言えます.

なので,これらを考慮できれば「移行は可能」な話だったりします.
あとは MRA が参照するべき directory を確認したり,
や MTA の設定を移植してやったりすればよいと思われます.


水無月 遊々
大ベテラン
会議室デビュー日: 2003/10/22
投稿数: 139
お住まい・勤務地: お星様☆彡
投稿日時: 2004-09-22 19:12
これに関しては少しばかりやったことがあるので、参考になればと思い書きました。手順としては以下の方法を採りました。ただし、Vine Linux + Postfixなのでsendmailの方はわかりませんです。(要検証ですね)


  1. 新規サーバで移行対象ユーザを作成
  2. 作成した全アカウントにテストメールを配信
  3. /var/spool/mail 以下に新規のアカウント分のメールが作成されたことを確認
  4. 旧サーバの /var/spool/mail 以下をマウント(マウントポイントを /old-mail とします)
  5. 旧サーバ内に存在するメールを以下のコマンドにて移行します。
      $ cat /old-mail/user1 >> /var/spool/mail/user1


利点は、ユーザのパーミッション等を考慮する必要がないこと、シェルスクリプトで組めばお手軽なことです。欠点はテストメールが配信されてしまうことです^^;

以上、参考になればよいのですが…。

_________________
脱線のNUSHI(見習い) ☆⌒(*^▽°)
1

スキルアップ/キャリアアップ(JOB@IT)