邮件列表禁止注册

4/22/2021 mailman

# 概述

禁止openEuler, openGauss, openLooKeng, MindSpore四个社区的邮件列表注册功能以及第三方登录

# 禁止新用户注册账号

邮件列表的注册功能由allauth提供,首先考虑是否开启/关闭注册功能的配置能够直接禁止注册。很遗憾,目前allauth暂无这样的开关。在allauth的高级用法 (opens new window)中,可以看到allauth.account.adapter.DefaulteAccountAdapter类中有一个is_open_for_signup的方法,默认返回True,如果要禁用帐户注册,可以通过返回False来覆盖此方法。

本文档将介绍通过如下步骤来实现禁止注册与屏蔽第三方登录:

  • 注释python第三方库中postorius/templates/postorius/base.htmlhyperkitty/templates/hyperkitty/base.html两个模板的注册标签,并将重写的base.html分别记为base.html、 base2.html,写入mailman-web-configmap中,并在mail的deploy.yaml中deployment的containers下的command中添加覆盖命令。
...
    spec:
      containers:
      - command:
        - /bin/sh
        - -c
        - |
          cp /opt/mailman-web-config/base.html /usr/lib/python3.6/site-packages/postorius/templates/postorius;
          cp /opt/mailman-web-config/base2.html /usr/lib/python3.6/site-packages/hyperkitty/templates/hyperkitty/base.html;
...
1
2
3
4
5
6
7
8
9
10
  • mailman-nginx-configmapdefault.confserver内添加一个location,重定向注册路由跳转回邮件列表首页。
	server {
		listen 80 default_server;
		
		root /opt/mailman-web-data;
		index index.html;
		
		location /static {
			alias /opt/mailman-web-data/static;
		}

		location / {
			uwsgi_pass 0.0.0.0:8080;
			include uwsgi_params;
			uwsgi_read_timeout 300;
		}

		location /accounts/signup {
			return ^/account/signup(.*)$ /postorius/lists/;
		}
	}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 禁用第三方登录

mailman-web-configmapsettings_local.py中,重写settings.py中的INSTALLED_APPS,去掉最后5项allauth.socialaccount相关的application,如下

  INSTALLED_APPS = [
	'hyperkitty',
	'postorius',
	'django_mailman3',
	'django.contrib.admin',
	'django.contrib.auth',
	'django.contrib.contenttypes',
	'django.contrib.sessions',
	'django.contrib.sites',
	'django.contrib.messages',
	'django.contrib.staticfiles',
	'rest_framework',
	'django_gravatar',
	'compressor',
	'haystack',
	'django_extensions',
	'django_q',
	'allauth',
	'allauth.account',
	'allauth.socialaccount',
  ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

配置完成后重启pod,配置生效,实现禁止新账号注册功能与禁用第三方登录。

# 后记

如果您有任何问题和改进建议,欢迎您随时联系github issue (opens new window)