Назад | Перейти на главную страницу

Проблемы с виртуальными хостами 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-адрес, я получаю следующее:

Однако обратите внимание, что на этот раз адрес электронной почты правильный.

Я получаю те же результаты, когда присутствуют обе строки:

VIRTUAL_HOSTS.clear()
add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)
add_virtualhost("104.131.98.138","lists.example.org")

Во-первых, простите меня за неверное направление, потому что я неправильно понял ваши намерения в прошлом. Насколько я понимаю, вы намерены использовать псевдоним 104.131.98.138 для lists.freedomlayer.org - поэтому, когда вы просматриваете 104.131.98.138 и lists.freedomlayer.org получите такой же результат - ДА?

К сожалению, с почтальоном это невозможно. Почтальон ожидает, что для каждого списка будет один уникальный URL. Подробнее, нажмите этот FAQ из документации почтальона

В любом случае вы можете установить перенаправление в 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]