如何使用IMAP工具在IMAP服务器之间迁移邮箱

如何使用IMAP工具在IMAP服务器之间迁移邮箱

本指南介绍如何使用IMAP TOOLS在IMAP服务器之间迁移邮箱。 IMAP工具是Perl脚本的集合,允许您使用IMAP服务器和POP3服务器执行各种任务。 在本文中,我将关注脚本imapcopy.pl(将邮件和邮箱从一个IMAP服务器复制到另一个)和pop3toimap.pl(将POP3邮件复制到IMAP服务器)。 两个脚本都支持SSL。 如果您指定端口993(POP3为995),则会启动SSL连接。 如果端口号为143(POP3为110),则会尝试使用非SSL连接。 使用任何其他值,端口将被测试以查看是否支持SSL。 如果是这样,SSL将用于建立连接; 否则将进行非SSL连接。

我不会保证这将为您工作!

1初步说明

我在这里使用两台服务器:

  • server1.example.com (来源)
  • server2.example.com (目标)

我想将server1.example.com上的邮箱sales@example.com (username: sales@example.com ,password: secret迁移server2.example.com上的邮箱sales@example.com (用户名和密码是与server1.example.com相同)。

2我们开始之前

在我们开始之前,让我们来看看这两个邮箱,看看它们的内容(你可以使用电子邮件客户端,如Outlook,Thunderbird或基于Web的电子邮件客户端,如SquirrelMail - 我在这里使用SquirrelMail)。

server1.example.com:

server2.example.com:

迁移后,server1.example.com上的三条消息应在server2.example.com上可用

3 IMAP工具安装

如果我们在server1.example.comserver2.example.com上安装IMAP TOOLS,我们甚至可以将它安装在第三个无关的服务器上。

我们在/ usr / local / imap_tools /目录中下载并安装IMAP TOOLS脚本,如下所示:

cd /usr/local/
mkdir imap_tools
cd imap_tools
wget http://www.athensfbc.com/imap_tools/files/imap_tools_V1.105.tar.gz
tar xvfz imap_tools_V1.105.tar.gz

现在我们必须使Perl脚本可执行:

chmod +x /usr/local/imap_tools/*.pl

4将电子邮件从一个IMAP服务器迁移到另一个IMAP服务器使用imapcopy.pl

imapcopy.pl的用法如下:

/usr/local/imap_tools/imapcopy.pl -S host1[:port]/user1/password1 -D host2[:port]/user2/password2

因此,将server@example.comsales@example.com的电子邮件从server2.example.com 复制sales@example.com命令是:

/usr/local/imap_tools/imapcopy.pl -S server1.example.com/sales@example.com/secret -D server2.example.com/sales@example.com/secret

以下是一个示例输出:

root@server1:/usr/local/imap_tools# /usr/local/imap_tools/imapcopy.pl -S server1.example.com/sales@example.com/secret -D server2.example.com/sales@example.com/secret
/usr/local/imap_tools/imapcopy.pl starting
Connected to server1.example.com on port 143
Authenticating to server1.example.com as sales@example.com
Connected to server2.example.com on port 143
Authenticating to server2.example.com as sales@example.com
Number of mailboxes to process: 5
   Drafts mailbox is empty
   Junk mailbox is empty
   Trash mailbox is empty
   Sent mailbox is empty
   Copied 3 messages to INBOX
Copied 3 total messages
root@server1:/usr/local/imap_tools#

在目标服务器( server2.example.com )上,您现在应该看到来自server1.example.com的消息:

server2.example.com:

5将电子邮件从POP3服务器迁移到具有pop3toimap.pl的IMAP服务器

pop3toimap.pl的用法如下:

/usr/local/imap_tools/pop3toimap.pl -p POP3host[:port] -i IMAPhost[:port] -u users_file

users_file具有以下格式:

popUsername password imapUsername password

所以我们来创建包含登录详细信息的文件/ usr / local / imap_tools / users_file

vi /usr/local/imap_tools/users_file
sales@example.com secret sales@example.com secret

将电子邮件从POP3服务器server1.example.com上的sales@example.com复制到IMAP服务器server2.example.com上的sales@example.com的命令是:

/usr/local/imap_tools/pop3toimap.pl -p server1.example.com -i server2.example.com -u /usr/local/imap_tools/users_file

如果你收到错误

Unexpected response to SELECT INBOX. command: 1 NO Mailbox does not exist, or must be subscribed to.
unexpected APPEND response: 1 NO Access denied for APPEND on INBOX. (ACL "i" required)

打开pop3toimap.pl ...

vi /usr/local/imap_tools/pop3toimap.pl

...并注释行123( $ mailbox ='INBOX',除非$ mailbox; )并添加行124( $ mailbox ='INBOX'; ):

[...]
   foreach $msgnum ( @popMsgList ) {
      if ( $range ) {
         Log("msgnum $msgnum") if $debug;
         next if $msgnum < $lower;
         next if $msgnum > $upper;
      }
      Log("Fetching POP message $msgnum") if $debug;
      $msg = getPOPMsg( $msgnum, $p_conn );

      getFlag( \$msg, \$flag );
      getDate( \$msg, \$date );

      next if $msg eq '';

      #$mailbox = 'INBOX' unless $mailbox;
      $mailbox = 'INBOX';
      selectMbx( $mailbox, $i_conn );

      if ( insertMsg(*msg, $mailbox, $date, $flag, $i_conn ) ) {
         $copied++;
         $grandTotal++;
         Log("$copied messages migrated") if $copied/100 == int($copied/100);

         #  Delete the message from the POP server if the delete flag is set
         deletePOPMsg( $msgnum, $p_conn ) if $delete;

      }
   }
[...]

然后运行

/usr/local/imap_tools/pop3toimap.pl -p server1.example.com -i server2.example.com -u /usr/local/imap_tools/users_file

再次命令。

以下是一个示例输出:

root@server1:/usr/local/imap_tools# /usr/local/imap_tools/pop3toimap.pl -p server1.example.com -i server2.example.com -u /usr/local/imap_tools/users_file
pop3toimap 1.3 starting
There are 1 users to be migrated
Connected to server1.example.com on port 110
Connected to server2.example.com on port 143
Migrating sales@example.com on server1.example.com to sales@example.com on server2.example.com (3 messages)

       Summary of POP3 -> IMAP migration

Users migrated  1
Total messages  3
Total bytes     2912

root@server1:/usr/local/imap_tools#

在目标服务器( server2.example.com )上,您现在应该看到来自server1.example.com的消息:

server2.example.com:

6链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏