使用imap迁移邮箱的插件

modoboa-imap-migration的Python项目详细描述


使用脱机IMAP迁移邮箱

traviscodecovCode Health

一个简单的Modoboa扩展,它提供了 使用OfflineIMAP迁移现有邮箱的方法。

它是如何工作的

这个扩展主要提供一个cron脚本,它周期性地 将用户邮箱从现有的IMAP服务器同步到新的 一个。工作流程非常简单:

  • 来自旧服务器的用户使用相同的凭据登录到modoboa
  • 将自动创建一个新帐户和一个新的迁移任务 使用提供的凭据创建
  • cron脚本定期同步与 迁移任务
  • 迁移完成后,可以通过“管理”面板禁用它

安装

通过以下方式在系统范围内或在虚拟环境中安装此扩展 运行以下命令:

$ python setup.py install

然后,编辑modoboa实例的settings.py文件并 在MODOBOA_APPS变量中添加modoboa_imap_migration。 像这样:

MODOBOA_APPS = (
  # ...
  'modoboa_imap_migration',
)

然后,在文件末尾添加以下内容:

from modoboa_imap_migration import settings as modoboa_imap_migration_settings
modoboa_imap_migration_settings.apply(globals())

重新启动运行modoboa的python进程(uwsgi、gunicorn、apache, 不管怎样)。

运行以下命令来设置数据库表:

$ cd <modoboa_instance_dir>
$ python manage.py migrate modoboa_imap_migration
$ python manage.py load_initial_data

您还需要install离线imap。

配置

身份验证后端

警告

请确保已启用自动域/邮箱创建, 否则身份验证将不起作用。转到联机设置 面板(管理选项卡)并检查当前状态。

IMAP身份验证后端由扩展提供,必须 启用。

编辑settings.py文件并修改 AUTHENTICATION_BACKENDS变量如下:

AUTHENTICATION_BACKENDS=('django.contrib.auth.backends.ModelBackend','modoboa_imap_migration.auth_backends.IMAPBackend',)

cron脚本

同步脚本必须配置为定期在上运行 你的新服务器。因为它会将邮箱内容复制到其最终版本 目标,必须尊重文件系统权限。这样做,它 必须由拥有邮箱的用户执行(通常 vmail)。

下面是一个配置示例,其中脚本执行于 小时。您可以将其复制到/etc/cron.d/modoboa文件中:

PYTHON=/srv/modoboa/env/bin/python
INSTANCE=/srv/modoboa/instance

0       */1     *       *       *       vmail   cd /srv/vmail &&$PYTHON$INSTANCE/manage.py generate_offlineimap_config --output .offlineimaprc && /usr/local/bin/offlineimap > /dev/null 2>&1

请随意调整。

脱机IMAP的帮助程序脚本

OfflineIMAP需要一种方法来检索旧的用户密码 服务器。为此,只需将以下python代码复制到一个文件中 调用.offlineimap.py

importosimportsiteimportsyssite.addsitedir("/srv/modoboa/env/lib/python2.7/site-packages")sys.path.append("/srv/modoboa/instance")os.environ["DJANGO_SETTINGS_MODULE"]="instance.settings"fromdjango.appsimportappsfromdjango.confimportsettingsapps.populate(settings.INSTALLED_APPS)frommodoboa_imap_migration.modelsimportMigrationdefget_user_password(username):"""Retrieve a password from Modoboa's database."""returnMigration.objects.select_related().get(mailbox__user__username=username).password

然后,将此文件复制到拥有 邮箱(通常是vmail)。例如:

$ cp .offlineimap.py /srv/vmail
$ chown vmail:vmail /srv/vmail/.offlineimap.py

联机设置

您需要配置对旧IMAP服务器的访问。

所有配置都是从管理面板(modoboa>; 参数>;IMAP迁移)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JPA。Eclipselink没有为mySQL提供密码,但它应该提供   我的Servlet和@FormDataParam存在java问题   java将什么作为上下文参数传递到文件I/O方法中?   如果两个值相同,java无法找到其中一个单选按钮   java在变量和方法名中使用下划线   JavaSpringMVC单线程安全?   klazz类的java Arraylist(反射Api)   java如何在数字字符串中查找最频繁的数字?   JavaAPI设计:使数据更易于阅读与强制更多API调用   JavaHadoopMapReduceforGoogleWebGraph   java无法启动gauge API:Runner意外退出   java如何在bluemix上使用ibm工作负载调度器?   拉取一年中某一周特定日期的所有日期   java为什么是我的角节点。js应用程序将图像上传到S3� 邮递员正确上传时的符号?   在不使用任何第三方jar的情况下将文件从本地传输到linux系统(java代码)   java将现有文件夹复制到Eclipse工作区中新创建的项目中   Java中的regex RegExp帮助   当使用“系统”外观时,Java组合框setSelectedItem会出现故障   JavaASM:在类的方法中获取局部变量名和值