diff --git a/inventory/service/group_vars/mailman3.yaml b/inventory/service/group_vars/mailman3.yaml index c294225266..6f4f58382d 100644 --- a/inventory/service/group_vars/mailman3.yaml +++ b/inventory/service/group_vars/mailman3.yaml @@ -11,6 +11,7 @@ letsencrypt_certs: - lists.airshipit.org - lists.katacontainers.io - lists.openinfra.dev + - lists.openinfra.org - lists.openstack.org - lists.starlingx.io - lists.zuul-ci.org @@ -81,7 +82,7 @@ exim_transports: return_path = ${local_part:$return_path}+$local_part=$domain@${domain:$return_path} # Mailman Configs mailman_multihost: true -mm_domains: 'lists.openstack.org:lists.zuul-ci.org:lists.airshipit.org:lists.starlingx.io:lists.opendev.org:lists.openinfra.dev:lists.katacontainers.io' +mm_domains: 'lists.openstack.org:lists.zuul-ci.org:lists.airshipit.org:lists.starlingx.io:lists.opendev.org:lists.openinfra.dev:lists.openinfra.org:lists.katacontainers.io' exim_local_domains: "@:{{ mm_domains }}" exim_enable_spf: true exim_aliases: @@ -121,16 +122,31 @@ exim_aliases: # But that requires updating our main exim config so that needs more thought. postorius: ':blackhole: outgoing email only from this address' exim_domain_aliases: - community@lists.openstack.org: community@lists.openinfra.dev + asia-advisory-board@lists.openinfra.dev: asia-advisory-board@lists.openinfra.org + community@lists.openinfra.dev: community@lists.openinfra.org + community@lists.openstack.org: community@lists.openinfra.org edge-computing@lists.openstack.org: edge-computing@lists.opendev.org - foundation@lists.openstack.org: foundation@lists.openinfra.dev - foundation-board@lists.openstack.org: foundation-board@lists.openinfra.dev - foundation-board-confidential@lists.openstack.org: foundation-board-confidential@lists.openinfra.dev - goldmembers@lists.openstack.org: goldmembers@lists.openinfra.dev - marketing@lists.openstack.org: marketing@lists.openinfra.dev - staff@lists.openstack.org: staff@lists.openinfra.dev - summit-programming-committee@lists.openinfra.dev: summit-track-chairs@lists.openinfra.dev - summitsponsors@lists.openstack.org: summitsponsors@lists.openinfra.dev + europe-advisory-board@lists.openinfra.dev: europe-advisory-board@lists.openinfra.org + foundation@lists.openinfra.dev: foundation@lists.openinfra.org + foundation@lists.openstack.org: foundation@lists.openinfra.org + foundation-board@lists.openinfra.dev: foundation-board@lists.openinfra.org + foundation-board@lists.openstack.org: foundation-board@lists.openinfra.org + foundation-board-confidential@lists.openinfra.dev: foundation-board-confidential@lists.openinfra.org + foundation-board-confidential@lists.openstack.org: foundation-board-confidential@lists.openinfra.org + goldmembers@lists.openinfra.dev: goldmembers@lists.openinfra.org + goldmembers@lists.openstack.org: goldmembers@lists.openinfra.org + marketing@lists.openinfra.dev: marketing@lists.openinfra.org + marketing@lists.openstack.org: marketing@lists.openinfra.org + nordix@lists.openinfra.dev: nordix@lists.openinfra.org + openinfra-asia@lists.openinfra.dev: openinfra-asia@lists.openinfra.org + openinfra-europe@lists.openinfra.dev: openinfra-europe@lists.openinfra.org + staff@lists.openinfra.dev: staff@lists.openinfra.org + staff@lists.openstack.org: staff@lists.openinfra.org + summit-track-chairs@lists.openinfra.dev: summit-track-chairs@lists.openinfra.org + summit-programming-committee@lists.openinfra.dev: summit-track-chairs@lists.openinfra.org + summitsponsors@lists.openinfra.dev: summitsponsors@lists.openinfra.org + summitsponsors@lists.openstack.org: summitsponsors@lists.openinfra.org + vmware-migration-wg@lists.openinfra.dev: vmware-migration-wg@lists.openinfra.org openinfralabs@lists.opendev.org: ':fail: this mailing list is not in use' mailman_sites: # First entry in this list is the primary web domain @@ -215,7 +231,7 @@ mailman_sites: - name: kata-hypervisor description: 'Discussion of security and virtualization targeted at container use cases' owner: 'jonathan@openstack.org' - - listdomain: lists.openinfra.dev + - listdomain: lists.openinfra.org install_languages: ['en'] lists: - name: asia-advisory-board diff --git a/playbooks/roles/mailman3/templates/mailman.vhost.j2 b/playbooks/roles/mailman3/templates/mailman.vhost.j2 index ca3bd57c85..66cf8a03a0 100644 --- a/playbooks/roles/mailman3/templates/mailman.vhost.j2 +++ b/playbooks/roles/mailman3/templates/mailman.vhost.j2 @@ -14,9 +14,17 @@ Use UserAgentFilter + RewriteEngine On + + # The lists.openinfra.dev site has moved to lists.openinfra.org + ServerAlias lists.openinfra.dev + RewriteCond %{SERVER_NAME} =lists.openinfra.dev + RewriteRule "/(.*)lists.openinfra.dev(.*)" "$1lists.openinfra.org$2" + RewriteCond %{SERVER_NAME} =lists.openinfra.dev + RewriteRule "/(.*)" "https://lists.openinfra.org/$1" [L,R=301] + # Use mod rewrite to redirect as we want to preserve the FQDN for each # mm3 vhost. - RewriteEngine On RewriteRule "/(.*)" "https://%{HTTP_HOST}/$1" [R=301] @@ -53,10 +61,19 @@ RewriteEngine On RewriteRule ^/robots.txt$ /var/www/robots/robots.txt [L] + + # Handle old Mailman v2/pipermail links RewriteRule "/pipermail/(.*)" "/var/lib/mailman/web-data/mm2archives/%{HTTP_HOST}/public/$1" RewriteRule "/cgi-bin/mailman/listinfo/(.*)" "https://%{HTTP_HOST}/mailman3/lists/$1.%{HTTP_HOST}/" RewriteRule "/cgi-bin/mailman/listinfo" "https://%{HTTP_HOST}/mailman3/lists/" + # The lists.openinfra.dev site has moved to lists.openinfra.org + ServerAlias lists.openinfra.dev + RewriteCond %{SERVER_NAME} =lists.openinfra.dev + RewriteRule "/(.*)lists.openinfra.dev(.*)" "$1lists.openinfra.org$2" + RewriteCond %{SERVER_NAME} =lists.openinfra.dev + RewriteRule "/(.*)" "https://lists.openinfra.org/$1" [L,R=301] + ProxyPassMatch ^/static/ ! ProxyPass "/" "uwsgi://localhost:8080/" diff --git a/testinfra/test_lists_opendev_org.py b/testinfra/test_lists_opendev_org.py index 8199767e73..d8aba2b66b 100644 --- a/testinfra/test_lists_opendev_org.py +++ b/testinfra/test_lists_opendev_org.py @@ -43,6 +43,30 @@ def test_robots(host): assert 'Disallow: /accounts/*' in cmd.stdout assert 'Allow: /archives/*' in cmd.stdout +def test_http_to_https_redirects(host): + cmd = host.run('curl ' + '--resolve lists.opendev.org:80:127.0.0.1 ' + 'http://lists.opendev.org/mailman3/lists/service-discuss.lists.opendev.org/') + assert '301 Moved Permanently' in cmd.stdout + assert 'https://lists.opendev.org/mailman3/lists/service-discuss.lists.opendev.org/' in cmd.stdout + +def test_domain_redirects(host): + cmd = host.run('curl ' + '--resolve lists.openinfra.dev:80:127.0.0.1 ' + 'http://lists.openinfra.dev/mailman3/lists/foundation.lists.openinfra.dev/') + assert '301 Moved Permanently' in cmd.stdout + assert 'https://lists.openinfra.org/mailman3/lists/foundation.lists.openinfra.org/' in cmd.stdout + cmd = host.run('curl --insecure ' + '--resolve lists.openinfra.dev:443:127.0.0.1 ' + 'https://lists.openinfra.dev/mailman3/lists/foundation.lists.openinfra.dev/') + assert '301 Moved Permanently' in cmd.stdout + assert 'https://lists.openinfra.org/mailman3/lists/foundation.lists.openinfra.org/' in cmd.stdout + cmd = host.run('curl --insecure ' + '--resolve lists.openinfra.dev:443:127.0.0.1 ' + 'https://lists.openinfra.dev/archives/list/foundation@lists.openinfra.dev/') + assert '301 Moved Permanently' in cmd.stdout + assert 'https://lists.openinfra.org/archives/list/foundation@lists.openinfra.org/' in cmd.stdout + def test_mailman3_screenshots(host): shots = ( ("https://lists.opendev.org:443", None, "mm3-opendev-main.png"), @@ -54,6 +78,15 @@ def test_mailman3_screenshots(host): ("https://lists.opendev.org:443" "/accounts/login/?next=/mailman3/lists/", None, "mm3-opendev-login.png"), + ("https://lists.openinfra.org:443", None, "mm3-openinfra-main.png"), + ("https://lists.openinfra.org:443/archives/", + None, "mm3-openinfra-archives.png"), + ("https://lists.openinfra.org:443" + "/archives/list/foundation@lists.openinfra.org/", + None, "mm3-openinfra-list.png"), + ("https://lists.openinfra.org:443" + "/accounts/login/?next=/mailman3/lists/", + None, "mm3-openinfra-login.png"), ("https://lists.openstack.org:443", None, "mm3-openstack-main.png"), ("https://lists.openstack.org:443/archives/", None, "mm3-openstack-archives.png"),