Я создаю набор 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]