Mailman 和 Apache 虚拟主机问题

Mailman 和 Apache 虚拟主机问题

我正在创建一个 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 地址时,我得到了以下信息: 直接使用 IP 进入 mailman

但请注意,这次的电子邮件地址是正确的。

当两条线都存在时,我也会得到相同的结果:

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.138lists.freedomlayer.org得到相同的结果时 - 是吗?

不幸的是,Mailman 无法做到这一点。Mailman 要求每个列表都有一个唯一的 URL。更多信息,请点击此常见问题解答来自 mailman 文档

无论如何,您可以在 Apache 中设置重定向。因此,每当用户不使用http://lists.freedomlayer.orgmailman 网页(即使用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]

相关内容