我正在创建一个 Mailman、Apache2.4 和 Postfix 的设置。我的问题如下。当我使用域名访问邮件列表时,我在浏览器中得到了正确的结果。这里是图片
但是,如果我尝试直接使用我的服务器的 IP 地址进行访问,我会看到一个不同的页面,其中缺少邮件列表。它看起来是这样的:
期望的结果是获得完全相同的页面。
apache2配置如下:
<Directory /usr/lib/cgi-bin/mailman/>
AllowOverride None
Options +ExecCGI
AddHandler cgi-script .cgi
# (Old apache2.2 style configuration:)
# Order allow,deny
# Allow from all
# New apache 2.4 configuration:
Require all granted
</Directory>
<Directory /var/lib/mailman/archives/public/>
Options FollowSymlinks
AllowOverride None
# (Old configuration:)
# Order allow,deny
# Allow from all
# New apache 2.4 configuration:
Require all granted
</Directory>
<Directory /usr/share/images/mailman/>
AllowOverride None
# (Old configuration:)
# Order allow,deny
# Allow from all
# New apache 2.4 configuration:
Require all granted
</Directory>
<VirtualHost *:80>
ServerName lists.example.org
DocumentRoot /var/www/lists
ErrorLog /var/log/apache2/lists-error.log
CustomLog /var/log/apache2/lists-access.log combined
<Directory /var/lib/mailman/archives/>
Options FollowSymLinks
AllowOverride None
</Directory>
Alias /archives/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/
ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin
ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb
ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm
ScriptAlias /create /usr/lib/cgi-bin/mailman/create
ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml
ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo
ScriptAlias /options /usr/lib/cgi-bin/mailman/options
ScriptAlias /private /usr/lib/cgi-bin/mailman/private
ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist
ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster
ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe
ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo/
</VirtualHost>
编辑:我在这里包含我的 mm_cfg.py 文件(Mailman 配置):
from Defaults import *
MAILMAN_SITE_LIST = 'mailman'
DEFAULT_URL_PATTERN = 'http://%s/'
# PRIVATE_ARCHIVE_URL = '/cgi-bin/mailman/private'
PUBLIC_ARCHIVE_URL = 'http://%(hostname)s/archives/%(listname)s'
IMAGE_LOGOS = '/mailman-icons/'
# Default domain for email addresses of newly created MLs
DEFAULT_EMAIL_HOST = 'lists.example.org'
# Default host for web interface of newly created MLs
DEFAULT_URL_HOST = 'lists.example.org'
VIRTUAL_HOSTS.clear()
add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)
DEFAULT_SERVER_LANGUAGE = 'en'
USE_ENVELOPE_SENDER = 0 # Still used?
DEFAULT_SEND_REMINDERS = 0
MTA='Postfix'
除此之外,我还通过运行以下命令禁用默认站点:
sudo a2dissite 000-default
我注意到,如果我不禁用 000-default,则使用 IP 地址访问网页会显示默认的 Apache 页面,显示一切正常。
我想知道是否有一些优雅的解决方案可以解决直接 IP 访问问题,使其显示与我使用域名时看到的页面相同的页面。
编辑:我尝试更改为(在 mm_cfg.py 内部):
VIRTUAL_HOSTS.clear()
add_virtualhost("104.131.98.138","lists.example.org")
正如所建议的。当我使用 URL lists.example.org 时,我得到了正确的页面,但是当我使用 IP 地址时,我得到了以下信息:
但请注意,这次的电子邮件地址是正确的。
当两条线都存在时,我也会得到相同的结果:
VIRTUAL_HOSTS.clear()
add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)
add_virtualhost("104.131.98.138","lists.example.org")
答案1
首先,请原谅我在这里误导你,因为我误解了你的意图在过去。现在,据我了解,您的意图是将 104.131.98.138 别名为 lists.freedomlayer.org - 因此当您浏览任一网站104.131.98.138
并lists.freedomlayer.org
得到相同的结果时 - 是吗?
不幸的是,Mailman 无法做到这一点。Mailman 要求每个列表都有一个唯一的 URL。更多信息,请点击此常见问题解答来自 mailman 文档
无论如何,您可以在 Apache 中设置重定向。因此,每当用户不使用http://lists.freedomlayer.org
mailman 网页(即使用http://104.131.98.138
)时,它将重定向到http://lists.freedomlayer.org。
这是使你的重定向起作用的 apache 配置
RewriteEngine On
RewriteCond %{HTTP_HOST} !^lists\.freedomlayer\.org [NC]
RewriteRule ^(.*)$ http://lists.freedomlayer.org/$1 [R=301,L]