使用imap迁移邮箱的插件
modoboa-imap-migration的Python项目详细描述
使用脱机IMAP迁移邮箱
一个简单的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迁移)。