Рейтинг:0

Mailcow SSL не работает

флаг cn

Используя Apache/mailcow, я настраиваю домашний почтовый сервер. Я следовал руководству по докеризации mailcow. И смог подключиться к моему сайту mailcow по адресу:

http://mail.example.com:8080

Мне пришлось использовать 8080, потому что мой сайт также настроен на этом сервере.

Я столкнулся с проблемой при попытке подключить мой клиент nextcloud к моему почтовому серверу, думая, что это проблема с SSL. Итак, я наконец установил ssl с помощью certbot.

У меня были учебники, в которых говорилось, что мне нужно создать файлы redirect.conf и site.conf.

Теперь я не могу получить доступ к своему почтовому сайту ни по одному из приведенных ниже URL-адресов.

Mail.example.com
Mail.example.com:8080 или 8443
http://mail.example.com
https://mail.example.com
http(s)://mail.example.com:8080 или 8443

Я знаю, что это как-то связано с перезаписью, «прокси» или «обратным прокси», но я действительно не знаю, что все это означает, поэтому я не знаю, что проверять .

Я не знаю, как Apache узнает, куда что-то отправить, поскольку значения documentroot нет в конфигурации. Я не знаю, для чего нужны файлы перенаправления или конфигурации сайта.

Что мне не хватает? Почему я не могу попасть на свой сайт через простой mail.example.com. В конце концов, я бы хотел, чтобы все приведенные выше URL-адреса перенаправлялись/переписывались на защищенный ssl сайт mail.example.com. Нет, :8080 или :8443

Файл виртуального хоста

<VirtualHost *:80>
  ServerName mail.example.com
  ServerAlias autodiscover.*
  ServerAlias autoconfig.*
  RewriteEngine on

  ProxyPass / http://mail.example.com:8080/
  ProxyPassReverse / http://mail.example.com:8080/

  RewriteCond %{HTTPS} off
  RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=301,L]

</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName mail.example.com
  ServerAlias autodiscover.*
  ServerAlias autoconfig.*

  # You should proxy to a plain HTTP session to offload SSL processing
  #ProxyPass /Microsoft-Server-ActiveSync http://127.0.0.1:8080/Microsoft-Server-ActiveSync connectiontim>
  #ProxyPassReverse /Microsoft-Server-ActiveSync http://127.0.0.1:8080/Microsoft-Server-ActiveSync
  ProxyPass / http://mail.example.com:8080/
  ProxyPassReverse / http://mail.example.com:8080/
  ProxyPreserveHost On
  ProxyAddHeaders On
  RequestHeader set X-Forwarded-Proto “https”

  Include /etc/letsencrypt/options-ssl-apache.conf

  SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem

  SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

  # If you plan to proxy to a HTTPS host:
  #SSLProxyEngine On

  # If you plan to proxy to an untrusted HTTPS host:
  #SSLProxyVerify none
  #SSLProxyCheckPeerCN off
  #SSLProxyCheckPeerName off
  #SSLProxyCheckPeerExpire off
</VirtualHost>
</IfModule>

Mailcow.conf

# -------------------------------
# конфигурация веб-интерфейса mailcow
# -------------------------------
# example.org _не_ является допустимым именем хоста, используйте здесь полное доменное имя.
# Административный пользователь по умолчанию — «admin».
# Пароль по умолчанию — «moohoo».

MAILCOW_HOSTNAME=mail.example.com

# Алгоритм хеширования пароля
# Поддерживаются только определенные алгоритмы хеширования паролей. Полный список поддерживаемых схем см.
# см. https://mailcow.github.io/mailcow-dockerized-docs/model-passwd/
MAILCOW_PASS_SCHEME=BLF-КРИПТА

# -------------------------------
# Конфигурация базы данных SQL
# -------------------------------

ИМЯБД=пример
DBUSER=пример

# Пожалуйста, используйте длинные случайные буквенно-цифровые строки (A-Za-z0-9)

ДБПАСС=**************
DBROOT=***************

# -------------------------------
# Привязки HTTP/S
# -------------------------------

# Вы должны использовать HTTPS, но в случае обратных прокси с разгрузкой SSL:
# Может быть важно: это также изменит привязку внутри контейнера.
# Если вы используете прокси в Docker, укажите ему порты, указанные ниже.
# _не_ используйте IP:PORT в HTTP(S)_BIND или HTTP(S)_PORT
# ВАЖНО: Не используйте порт 8081, 9081 или 65510!
# Пример: HTTP_BIND=1.2.3.4
# Для IPv4 и IPv6 оставьте поле пустым: HTTP_BIND= & HTTPS_PORT=
# Для IPv6 см. https://mailcow.github.io/mailcow-dockerized-docs/firststeps-ip_bindings/

HTTP_PORT=8080
HTTP_BIND=

HTTPS_PORT=8443
HTTPS_BIND=

# -------------------------------
# Другие привязки
# -------------------------------
# Вы должны оставить это в покое
# Формат: 11.22.33.44:25 или 12.34.56.78:465 и т. д.

SMTP_PORT=25
SMTPS_PORT=465
SUBMISSION_PORT=587
IMAP_PORT=143
IMAPS_PORT=993
ПОРТ_ПОРТ=110
ПОПС_ПОРТ=995
SIEVE_PORT=4190
DOVEADM_PORT=127.0.0.1:19991
SQL_PORT=127.0.0.1:13306
SOLR_PORT=127.0.0.1:18983
REDIS_PORT=127.0.0.1:7654

# Ваш часовой пояс
# См. https://en.wikipedia.org/wiki/List_of_tz_database_time_zones для списка часовых поясов
# Используйте строку с именем «Имя базы данных TZ» + обратите внимание на строку «Примечания»

ТЗ=****

# Фиксированное имя проекта
# Пожалуйста, используйте только строчные буквы

COMPOSE_PROJECT_NAME=mailcowdockerized

# Установите для этого параметра значение «разрешить», чтобы включить псевдопользователя any. Отключено по умолчанию.
# Если этот параметр включен, можно создать ACL, который применяется ко «Всем аутентифицированным пользователям».
# Вероятно, это следует активировать только на почтовых хостах, которые используются исключительно одной организацией.
# В противном случае пользователь может поделиться данными со слишком большим количеством других пользователей.
ACL_ANYONE=запретить

# Очистка сборщика мусора
# Удаленные домены и почтовые ящики перемещаются в /var/vmail/_garbage/timestamp_sanitizedstring
# Как долго объекты должны оставаться в мусоре, пока они не будут удалены? (значение в минутах)
# Интервал проверки ежечасно

MAILDIR_GC_TIME=7200

# Дополнительный SAN для сертификата
#
# Вы можете использовать записи с подстановочными знаками для создания определенных имен для каждого домена, который вы добавляете в mailcow.
# Пример: добавьте домены «example.com» и «example.net» в mailcow, измените ADDITIONAL_SAN на значение, подобное:
#ADDITIONAL_SAN=imap.*,SMTP.*
# Это расширит сертификат до «imap.example.com», «smtp.example.com», «imap.example.net», «imap.example.net».
# плюс каждый домен, который вы добавите в будущем.
#
# Вы также можете просто добавить статические имена...
#ADDITIONAL_SAN=srv1.example.net
# …или комбинируйте подстановочные знаки и статические имена:
#ADDITIONAL_SAN=imap.*,srv1.example.com
#

ДОПОЛНИТЕЛЬНАЯ_САН=

# Дополнительные имена серверов для пользовательского интерфейса mailcow
#
# Укажите альтернативные адреса для ответа пользовательского интерфейса mailcow
# Это полезно, когда вы устанавливаете mail.* как ADDITIONAL_SAN и хотите убедиться, что mail.maildomain.com всегда будет указывать на пользовательский интерфейс mailcow.
# Если имя сервера не совпадает с известным сайтом, Nginx принимает решение на основе наилучшего предположения и может перенаправить пользователей на неверный корневой веб-узел.
# Вы можете понимать это как директиву server_name в Nginx.
# Список через запятую без пробелов! Пример: ADDITIONAL_SERVER_NAMES=a.b.c,d.e.f

ДОПОЛНИТЕЛЬНЫЕ_ИМЯ_СЕРВЕРА=

# Пропустить запуск ACME (acme-mailcow, сертификаты Let’s Encrypt) – y/n

SKIP_LETS_ENCRYPT=y

# Создать отдельные сертификаты для всех доменов – y/n
# это позволит добавить более 100 доменов, но некоторые почтовые клиенты не смогут подключаться с альтернативными именами хостов
# см. https://wiki.dovecot.org/SSL/SNIClientSupport
ENABLE_SSL_SNI=y

# Пропустить проверку IPv4 в контейнере ACME – y/n

SKIP_IP_CHECK=n

# Пропустить проверку HTTP в контейнере ACME – y/n

SKIP_HTTP_VERIFICATION=n

# Пропустить антивирус ClamAV (clamd-mailcow) (Rspamd автоматически обнаружит отсутствующий контейнер ClamAV) – y/n

SKIP_CLAMD=n

# Пропустить SOGo: отключит интеграцию SOGo и, следовательно, поддержку веб-почты, протоколов DAV и ActiveSync (экспериментальная, неподдерживаемая, не полностью реализованная) — y/n

SKIP_SOGO=n

# Пропустите Solr в системах с малым объемом памяти или если вы не хотите хранить удобочитаемый индекс ваших писем в solr-vol-1.

SKIP_SOLR=n

# Размер кучи Solr в МБ, рекомендации отсутствуют, см. документы Solr.
# Solr склонен к запуску OOM и должен контролироваться. Не рекомендуется использовать неконтролируемые настройки Solr.

SOLR_HEAP = 1024

# Разрешить администраторам входить в SOGo как пользователь электронной почты (без пароля)

ALLOW_ADMIN_EMAIL_LOGIN=n

# Включить сторожевой таймер (watchdog-mailcow) для перезапуска неработоспособных контейнеров

USE_WATCHDOG=y

# Отправлять уведомления сторожевого таймера по почте (отправляемые с адреса watchdog@MAILCOW_HOSTNAME)
# ОСТОРОЖНОСТЬ:
# 1. Вы должны использовать внешних получателей
# 2. Письма отправляются без подписи (без DKIM)
# 3. Если вы используете DMARC, создайте отдельную политику DMARC («v=DMARC1; p=none;» в _dmarc.MAILCOW_HOSTNAME)
# Разрешено несколько rcpts, БЕЗ кавычек, БЕЗ пробелов

#[email protected],[email protected],[email protected]
#WATCHDOG_NOTIFY_EMAIL=

# Уведомлять о заблокированном IP (включая поиск whois)
WATCHDOG_NOTIFY_BAN=n

# Тема для сторожевого письма. По умолчанию используется «Watchdog ALERT», за которым следует сообщение об ошибке.
#WATCHDOG_SUBJECT=

# Проверяет, является ли mailcow открытым ретранслятором. Требуется САЛ. Последуют дополнительные проверки.
# https://www.servercow.de/mailcow?lang=en
# https://www.servercow.de/mailcow?lang=de
# Данные не собираются. Подключенный и анонимный.
# Будет работать только с немодифицированными настройками mailcow.
WATCHDOG_EXTERNAL_CHECKS=n

# Включить подробное ведение журнала сторожевого таймера
WATCHDOG_VERBOSE=n

# Максимальное количество строк журнала на службу для хранения в журналах Redis

LOG_LINES=9999

# Внутренняя подсеть IPv4/24, формат n.n.n (расширяется до n.n.n.0/24)
# Используйте только частные IPv4-адреса, см. https://en.wikipedia.org/wiki/Private_network#Private_IPv4_addresses

IPV4_NETWORK=172.22.1

# Внутренняя подсеть IPv6 в fc00::/7
# Используйте только частные IPv6-адреса, см. https://en.wikipedia.org/wiki/Private_network#Private_IPv6_addresses

IPV6_NETWORK=fd4d:6169:6c63:6f77::/64

# Используйте этот IPv4 для исходящих соединений (SNAT)

#SNAT_TO_SOURCE=

# Используйте этот IPv6 для исходящих соединений (SNAT)

#SNAT6_TO_SOURCE=

# Создать или переопределить ключ API для веб-интерфейса
# Вы _должны_ определить API_ALLOW_FROM, который представляет собой список IP-адресов, разделенных запятыми.
# Ключ API, определенный как API_KEY, имеет доступ для чтения и записи
# Ключ API, определенный как API_KEY_READ_ONLY, имеет доступ только для чтения
# Допустимые символы для API_KEY и API_KEY_READ_ONLY: a-z, A-Z, 0-9, -
# Вы можете определить API_KEY и/или API_KEY_READ_ONLY

#API_KEY=
#API_KEY_READ_ONLY=
#API_ALLOW_FROM=172.22.1.1,127.0.0.1

# mail_home - это ~/Maildir
MAILDIR_SUB=Почтовый каталог

# Тайм-аут сеанса SOGo в минутах
SOGO_EXPIRE_SESSION=480

# DOVECOT_MASTER_USER и DOVECOT_MASTER_PASS должны быть предоставлены оба. Никаких специальных символов.
# Пусто по умолчанию, чтобы автоматически генерировать главного пользователя и пароль при запуске.
# Пользователь расширяется до [email protected]
# ОСТАВЬТЕ ПУСТОЙ, ЕСЛИ НЕ УВЕРЕНЫ
DOVECOT_MASTER_USER=
# ОСТАВЬТЕ ПУСТОЙ, ЕСЛИ НЕ УВЕРЕНЫ
DOVECOT_MASTER_PASS=

# Давайте зашифруем регистрационную контактную информацию
# Необязательно: оставьте пустым, если нет
# Это значение используется только при первом заказе!
# Чтобы установить его позже, потребуются следующие шаги:
# https://mailcow.github.io/mailcow-dockerized-docs/debug-reset_tls/
ACME_CONTACT=

# Проверка производителя устройства WebAuthn
# После установки WEBAUTHN_ONLY_TRUSTED_VENDORS=y разрешены только устройства проверенных производителей
# корневые сертификаты можно поместить для проверки в mailcow-dockerized/data/web/inc/lib/WebAuthn/rootCertificates
WEBAUTHN_ONLY_TRUSTED_VENDORS=n

Site.conf

Сервер {
Прослушать 80 default_server;
Слушать [::]:80 default_server;
Включить /etc/nginx/conf.d/server_name.active;
Если ($request_uri ~* â%0A|%0Dâ) { return 403; }
Вернуть 301 https://$host$uri$is_args$args;
}

Перенаправление.conf

    Сервер {
  Корень / сеть;
  Прослушать 80 default_server;
  Слушать [::]:80 default_server;
  Включить /etc/nginx/conf.d/server_name.active;
  Если ($request_uri ~* â%0A|%0Dâ) { return 403; }
  Местоположение ^~ /.well-known/acme-challenge/ {
    Позволять все;
    Default_type «текстовый/обычный»;
  }
  Место расположения / {
    Вернуть 301 https://$host$uri$is_args$args;
  }
}
user3779539 avatar
флаг cn
Репост из переполнения стека.
флаг in
И здесь тоже не по теме. Сожалею.
user3779539 avatar
флаг cn
Не могли бы вы помочь мне понять, как это не по теме? Я не могу задавать вопросы о моем коде в переполнении стека, потому что он связан с сервером, хотя именно там были заданы другие вопросы по этой похожей теме. Здесь нельзя задать вопрос, потому что он не по теме? Что там не по теме? Это сервер? Я даже не знаю, чего я не знаю, и вместо того, чтобы получить помощь, мне говорят, что я не могу просить о помощи?
флаг in
Вы можете задать вопрос о домашней настройке на [su] или [unix.se]
djdomi avatar
флаг za
Я предлагаю вам присоединиться к https://t.me/mailcow в телеграмме, поскольку tgis является официальным каналом поддержки для mailcow.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.