使用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 安卓工具栏   java接口VS API VS公共类   无法解析java。lang.ClassNotFoundException:在安卓 studio中找不到类“com.example.安卓.camera2basic.AutoFitTextureView”?   java等待线程正常完成   java在JTable中的prepareRenderer方法中编辑单元格数据是否可行?   java SessionNotCreatedException selenium webdriver   java Android Studio Gradle CreateProcess错误=2   java找不到适用于异常(int)的构造函数   javascript如何在不使用正则表达式的情况下检查输入是否为表情符号?   从JAVA运行ant时,JAVA_HOME变量不正确   long的java min值引发异常   java如何在这段代码中实现侦听器?   带有透明文本的java Android按钮   图像Java扫描仪问题(JFrame)   java模拟输入蒸汽似乎在Junit测试的第一次输入中就被吃掉了   压缩Java Deflater,现在和将来的结果相同(确定性)   java JTable getModel()。setValueAt从数组中删除第一个元素   java我有不同于编译器和计算器的价值   使用C#客户端调用基本身份验证java webservice   java相同类型的多个@Embedded字段在持久化后始终为空