Author Topic: migrate email by imapcopy and install CPAN perl in any OS  (Read 6209 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
migrate email by imapcopy and install CPAN perl in any OS
« on: มกราคม 24, 2011, 11:25:15 AM »
พอดีวันนี้ ได้ migrate mail ครับเลยเอาข้อมูลวิธี มาให้เพื่อนๆ พี่ๆ น้องๆ ดูหน่อยเผื่อจะเป็นประโยชน์
บ้าง

อิอิ
การใช้ imapcopy ในการ migrate mail ที่เป็น imap ครับโดยผ่าน perl module

ต้อง download imapcopy shell ก่อนครับโดยหาจาก google ก็ได้ชื่อ Golfinho-IMAPCopy-0.06.tar.gz
เริ่มต้นลง perl module
#perl -MCPAN -e shell
กระผมเลือกใช้ ค่า default ทั้งหมด
เสร็จแล้วทำการลง ตัว Bundle ครับ ในครั้งแรกที่มีการ ลง perl module
CPAN>install Bundle::CPAN

รอสักครู่ นานสองนาน เมื่อเสร็จแล้ว install IMAPClient Module
CPAN>install Mail::IMAPClient

ออกจาก cpan โดย
CPAN>quit
สั่งให้มัน updatedb
#updatedb
#locate IMAPCopy.pm

ทำการ copy IMAPCopy.pm_hack ไปทับไฟล์ IMAPCopy.pm ซึ่ง perl จะเรียกใช้งาน module นี้ครับ
แล้วเราก็เรียก script imapcopy
ถ้ามี user เดียวสั่งแบบนี้ เลยครับ
/usr/bin/imapcopy -from-host mail.xxx.com -from-login golfreeze -from-pass passxxx -to-host
localhost -to-login golfreeze@destination.com -to-pass passxxx -tmpdir /tmp -to-debug

ของผมมี migrate เยอะเลยใช้วิธีเขียน shell script ช่วยครับ
++++++++++++++++++++++++++++++++++++++++++++++++
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin
export PATH

##Directory value

HOME=/mbox
USERLIST=/home/golf/imapcopy_only
ID=vmail
GID=mail


## Check user and create for dir user ##
if [ -s ${USERLIST}/userlist_seperate_test ] # if file size of new_account > 0
then
#lock account file
chown root ${USERLIST}/userlist_seperate_test
chmod 770 ${USERLIST}/userlist_seperate_test

while read account_dest
do
#Begin imapcopy change #account_ori and #account_dest
/usr/bin/imapcopy -from-host mail.xxx.com -from-login golfreeze -from-pass passxxx
-to-host
localhost -to-login golfreeze@destination.com -to-pass passxxx -tmpdir /tmp

done < ${USERLIST}/userlist_seperate_test

cat /dev/null > ${USERLIST}/userlist_seperate_test
chown root:root ${USERLIST}/userlist_seperate_test
chmod 770 ${USERLIST}/userlist_seperate_test

else
#nothing to do
exit
fi
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
สำหรับ ตัวแปร
account_ori = account ต้นทาง
account_dest = account ปลายทาง

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: migrate email by imapcopy and install CPAN perl in any OS
« Reply #1 on: มกราคม 24, 2011, 11:25:25 AM »
พอดีจะ ทำการ test connection ของ imap ครับผ่าน
user = golfreeze@xxx.com
pass = passxxx
เริ่มต้นเลย

วิธีการเข้าไปอ่านเมลผ่าน protocol imap (port 143) ด้วยวิธีการ telnet
#telnet localhost 143

ขั้นตอนที่ 1 ทำการใส่ username password ตาม command
. login golfreeze@xxx.com passxxx

ขั้นตอนที่ 2 ทำการ list ดูรายชื่อ folder ภายใน account ของเรา
. LIST "INBOX" "*"
* LIST (\HasNoChildren) "." "INBOX.Folder1"
* LIST (\HasNoChildren) "." "INBOX.Folder2"
* LIST (\HasChildren) "." "INBOX.Folder3"
. OK Completed

ขั้นตอนที่ 3 ทำการ select folder ที่ต้องการเข้าไปอ่านเมล
. SELECT "INBOX"
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen NonJunk Junk $NotJunk $Junk $Forwarded)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen NonJunk Junk $NotJunk $Junk $Forwarded \*)] 
* 2 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1136990532]
* OK [UIDNEXT 12498]
* OK [NOMODSEQ] Sorry, modsequences have not been enabled on this mailbox
. OK [READ-WRITE] Completed

ขั้นตอนที่ 4 หลังจากพบว่ามีเมลอยู่ใน inbox อยู่ 2 ฉบับ (2 EXISTS) และต้องการอ่านเมลฉบับที่ 2 ก็
. FETCH 2 BODY []

Return-Path: <root@example.com>
X-Original-To: golftest
Delivered-To: golftest@example.com
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
        by spz.example.com (Postfix) with SMTP id 6B9E49F78B
        for <golftest>; Thu, 30 Apr 2015 09:57:03 +0700 (ICT)
Message-Id: <20150430025706.6B9E49F78B@example.com>
Date: Thu, 30 Apr 2015 09:57:03 +0700 (ICT)
From: root@example.com
To: undisclosed-recipients:;

check send second on 0954
)
* 2 FETCH (FLAGS (\Seen \Recent))
. OK FETCH completed.

ขั้นตอนที่ 5 หลังจากเจอ mail content แล้วต้องการจบ process และ logout ออก
. logout
« Last Edit: เมษายน 30, 2015, 10:11:32 AM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: migrate email by imapcopy and install CPAN perl in any OS
« Reply #2 on: มกราคม 24, 2011, 11:25:34 AM »
กรณี ที่ต้องการ reconfigure ของ perl ก็เข้าตามนี้

#perl -MCPAN -e shell

CPAN>o conf help
CPAN>o conf init

ให้ set ค่าต่างๆ ใหม่ ทำการ เลือก urllist ที่ต้องการไป check package และ install ตัว ผมเลือกเป็น
ประเทศไทย
เสร็จแล้ว รอให้ perl ทำการ update package ต่างๆ ให้เสร็จ

เมื่อหยุดแล้ว ทำการ wrote configure โดย
CPAN>o conf commit

เรียบร้อยแล้วก็ออกครับ
CPAN>exit

เข้าใหม่ แล้วดูตรง version CPAN exploration and modules installation (v1.9205) ครับจะเป็น
ตัวใหม่ล่าสุด

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: migrate email by imapcopy and install CPAN perl in any OS
« Reply #4 on: ธันวาคม 04, 2016, 09:43:11 PM »
ในกรณีย้ายเมลจาก WinMail server  ที่เป็น imap protocol มาเป็นรูปแบบของ Maildir
ให้ทำการ dump เอาไว้ก่อน เพราะบาง MTA มีรูปแบบของการเขียนไฟล์ลงเมลที่แตกต่างปกติ

###Work could dump to fold /tmp/file/
./iu-dump  -S 203.xxx.yyy.zzz/abc@packetlove.com/abc -f /tmp/file

###Work after dump and then restore file into mailbox
./iu-restore -i 103.xxx.yyy.zzz/abc@packetlove.com/abc -D /tmp/file

เท่านี้ก็จะทำให้ได้ อีเมลจากระบบเก่ามาลงในระบบเมล เครื่องใหม่ละครับผม : )

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: migrate email by imapcopy and install CPAN perl in any OS
« Reply #5 on: มิถุนายน 25, 2017, 10:28:06 AM »
ในกรณี เครื่องปลายทางต่อด้วย port 993 (imap-ssl) สามารถใช้ command ได้ดังนี้
./iu-copy -S source_ip27.xxx.yyy.zzz:993/abc@packetlove.co.th/password1 -D destination_ip:993/abc@packetlove.co.th/password2

แต่ต้องติดตั้ง perl module SSL
perl -MCPAN -e shell
install IO::Socket::INET
install IO::Socket::SSL
 8)
« Last Edit: มิถุนายน 20, 2020, 03:52:36 PM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: migrate email by imapcopy and install CPAN perl in any OS
« Reply #6 on: มีนาคม 29, 2019, 08:43:56 PM »
ถ้ารหัสของ user มีตัวอักขระพิเศษเช่น ! % $ ต้องใส่ \ นำหน้าด้วยเช่น
รหัสเป็น :  !%s22$
ใส่เพิ่มเป็น : \!\%s22\$