使用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 NamedQuery错误“具有给定标识符的多行:1”   java无法使用单独类中的计时器更新TextView   兼容性什么时候可以很快使用新的Java功能?   java二叉树路径和   java矩形的性能   java我想从同一个子表在主表中添加两个外键   java如何获取基于特定日期的所有数据?   java javafx、OO编程规则和写入变量类型的选择   java使用带枚举的switch语句   java异步任务生成运行时异常   java为什么JLabel不显示下划线字符?   java如何解析具有可变参数号的函数?   带有按钮的java JavaFX自定义列表单元格:未调用处理程序   java Modelmapper无法映射整个模型?   传递给持久化的java分离实体,包含LatLng列表