Folosind Apache/mailcow, configurez un server de e-mail de acasă. Am urmat tutorialul dockerizat mailcow. Și m-am putut conecta la site-ul meu mailcow la:
http://mail.example.com:8080
A trebuit să folosesc 8080, pentru că am site-ul meu setat și pe acest server.
Am întâmpinat o problemă când încercam să-mi conectez clientul nextcloud la serverul meu de e-mail, am crezut că este o problemă cu SSL. Așa că în sfârșit am instalat ssl folosind certbot.
Am avut tutoriale care îmi spuneau să fac atât fișierele redirect.conf, cât și site.conf.
Acum nu pot accesa site-ul meu de e-mail de la oricare dintre adresele URL de mai jos.
Mail.example.com
Mail.example.com:8080 sau 8443
http://mail.example.com
https://mail.example.com
http(s)://mail.example.com:8080 sau 8443
Știu că asta are ceva de-a face cu rescrierile sau „proxy” sau „proxy invers”, dar nu știu ce înseamnă asta, așa că nu știu ce să verific. .
Nu știu cum știe Apache unde să trimită ceva, deoarece valoarea documentroot nu este în configurație. Nu știu pentru ce sunt fișierele de redirecționare sau de configurare a site-ului.
Ce îmi lipsește? De ce nu pot intra pe site-ul meu prin intermediul mail.example.com simplu. În cele din urmă, aș dori ca toate adresele URL de mai sus să ajungă/să fie rescrise pe site-ul ssl secure mail.example.com. Nu, :8080 sau :8443
Fișierul Virtualhost
<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
# -------------------------------
# configurație ui web mailcow
# -------------------------------
# example.org este _nu_ un nume de gazdă valid, utilizați un fqdn aici.
# Utilizatorul administrator implicit este âadminâ
# Parola implicită este âmoohooâ
MAILCOW_HOSTNAME=mail.example.com
# Algoritmul de hash al parolei
# Sunt acceptați doar anumite algoritmi de hash pentru parole. Pentru o listă completă a schemelor acceptate,
# vezi https://mailcow.github.io/mailcow-dockerized-docs/model-passwd/
MAILCOW_PASS_SCHEME=BLF-CRYPT
# -------------------------------
# Configurarea bazei de date SQL
# -------------------------------
DBNAME=exemplu
DBUSER=exemplu
# Utilizați șiruri alfanumerice lungi, aleatorii (A-Za-z0-9)
DBPASS=**************
DBROOT=*************
# -------------------------------
# Legături HTTP/S
# -------------------------------
# Ar trebui să utilizați HTTPS, dar în cazul proxy-urilor inverse descărcate SSL:
# Poate fi important: acest lucru va schimba, de asemenea, legarea din container.
# Dacă utilizați un proxy în Docker, îndreptați-l către porturile pe care le-ați setat mai jos.
# _Nu_ utilizați IP:PORT în HTTP(S)_BIND sau HTTP(S)_PORT
# IMPORTANT: Nu utilizați portul 8081, 9081 sau 65510!
# Exemplu: HTTP_BIND=1.2.3.4
# Pentru IPv4 și IPv6 lăsați-l necompletat: HTTP_BIND= & HTTPS_PORT=
# Pentru IPv6, consultați https://mailcow.github.io/mailcow-dockerized-docs/firststeps-ip_bindings/
HTTP_PORT=8080
HTTP_BIND=
HTTPS_PORT=8443
HTTPS_BIND=
# -------------------------------
# Alte legături
# -------------------------------
# Ar trebui să lași asta în pace
# Format: 11.22.33.44:25 sau 12.34.56.78:465 etc.
SMTP_PORT=25
SMTPS_PORT=465
SUBMISSION_PORT=587
IMAP_PORT=143
IMAPS_PORT=993
POP_PORT=110
POPS_PORT=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
# Fusul dvs. orar
# Consultați https://en.wikipedia.org/wiki/List_of_tz_database_time_zones pentru o listă de fusuri orare
# Utilizați rândul numit âTZ database nameâ + acordați atenție rândului âNotesâ
TZ=****
# Numele proiectului fix
# Utilizați numai litere mici
COMPOSE_PROJECT_NAME=mailcowdockerized
# Setați acest lucru la âallowâ pentru a activa pseudo-utilizatorul oricui. Dezactivat implicit.
# Când este activat, ACL poate fi creat, care se aplică pentru „Toți utilizatorii autentificați”
# Acest lucru ar trebui să fie activat probabil numai pe gazdele de e-mail, care sunt utilizate exclusiv de o singură organizație.
# În caz contrar, un utilizator ar putea partaja date cu prea mulți alți utilizatori.
ACL_ANYONE=nu permite
# Curățarea colectorului de gunoi
# Domeniile și cutiile poștale șterse sunt mutate în /var/vmail/_garbage/timestamp_sanitizedstring
# Cât timp ar trebui să rămână obiectele la gunoi până când sunt șterse? (valoare în minute)
# Intervalul de verificare este pe oră
MAILDIR_GC_TIME=7200
# SAN suplimentar pentru certificat
#
# Puteți utiliza înregistrările wildcard pentru a crea nume specifice pentru fiecare domeniu pe care îl adăugați la mailcow.
# Exemplu: adăugați domeniile âexample.comâ și âexample.netâ la mailcow, schimbați ADDITIONAL_SAN la o valoare precum:
#ADDITIONAL_SAN=imap.*,smtp.*
# Acest lucru va extinde certificatul la „imap.example.com”, „smtp.example.com”, „imap.example.net”, „imap.example.net”.
# plus fiecare domeniu pe care îl adăugați în viitor.
#
# De asemenea, puteți adăuga doar nume statice...
#ADDITIONAL_SAN=srv1.example.net
# â¦sau combinați numele metalice și numele statice:
#ADDITIONAL_SAN=imap.*,srv1.example.com
#
ADDITIONAL_SAN=
# Nume suplimentare de server pentru UI mailcow
#
# Specificați adrese alternative la care să răspundă interfața mailcow
# Acest lucru este util atunci când setați mail.* ca ADDITIONAL_SAN și doriți să vă asigurați că mail.maildomain.com va indica întotdeauna către UI mailcow.
# Dacă numele serverului nu se potrivește cu un site cunoscut, Nginx decide după cea mai bună ghicire și poate redirecționa utilizatorii către rădăcina web greșită.
# Puteți înțelege acest lucru ca directivă server_name în Nginx.
# Listă separată prin virgulă fără spații! Exemplu: ADDITIONAL_SERVER_NAMES=a.b.c,d.e.f
ADDITIONAL_SERVER_NAMES=
# Omiteți rularea ACME (acme-mailcow, Letâs Encrypt certs) â da/n
SKIP_LETS_ENCRYPT=a
# Creați certificate separate pentru toate domeniile â da/n
# aceasta va permite adăugarea a mai mult de 100 de domenii, dar unii clienți de e-mail nu se vor putea conecta cu nume de gazdă alternative
# vezi https://wiki.dovecot.org/SSL/SNIClientSupport
ENABLE_SSL_SNI=a
# Omite verificarea IPv4 în containerul ACME â da/nu
SKIP_IP_CHECK=n
# Omite verificarea HTTP în containerul ACME â da/nu
SKIP_HTTP_VERIFICATION=n
# Omiteți antivirusul ClamAV (clamd-mailcow) (Rspamd va detecta automat un container ClamAV lipsă) â da/n
SKIP_CLAMD=n
# Omiteți SOGo: va dezactiva integrarea SOGo și, prin urmare, webmail, protocoale DAV și suport ActiveSync (experimental, neacceptat, neimplementat complet) â da/n
SKIP_SOGO=n
# Omiteți Solr pe sisteme cu memorie redusă sau dacă nu doriți să stocați un index lizibil al e-mailurilor dvs. în solr-vol-1.
SKIP_SOLR=n
# Dimensiunea heap Solr în MB, nu există nicio recomandare, consultați documentele Solr.
# Solr este predispus să ruleze OOM și ar trebui monitorizat. Configurațiile Solr nemonitorizate nu sunt recomandate.
SOLR_HEAP=1024
# Permiteți administratorilor să se conecteze la SOGo ca utilizator de e-mail (fără nicio parolă)
ALLOW_ADMIN_EMAIL_LOGIN=n
# Activați watchdog (watchdog-mailcow) pentru a reporni containerele nesănătoase
USE_WATCHDOG=a
# Trimite notificări watchdog prin e-mail (trimis de la watchdog@MAILCOW_HOSTNAME)
# PRUDENȚĂ:
# 1. Ar trebui să utilizați destinatari externi
# 2. E-mailurile sunt trimise nesemnate (fără DKIM)
# 3. Dacă utilizați DMARC, creați o politică DMARC separată (âv=DMARC1; p=none;â în _dmarc.MAILCOW_HOSTNAME)
# Mai multe rcpts permise, FĂRĂ ghilimele, FĂRĂ spații
#[email protected],[email protected],[email protected]
#WATCHDOG_NOTIFY_EMAIL=
# Notificare despre IP interzis (include căutarea whois)
WATCHDOG_NOTIFY_BAN=n
# Subiect pentru e-mailurile watchdog. Setarea implicită este „Watchdog ALERT” urmată de mesajul de eroare.
#WATCHDOG_SUBJECT=
# Verifică dacă mailcow este un releu deschis. Necesită SAL. Vor urma mai multe verificări.
# https://www.servercow.de/mailcow?lang=en
# https://www.servercow.de/mailcow?lang=de
# Nu sunt colectate date. Opt-in și anonim.
# Va funcționa numai cu setări mailcow nemodificate.
WATCHDOG_EXTERNAL_CHECKS=n
# Activați jurnalul de tip watchdog
WATCHDOG_VERBOSE=n
# Max linii de jurnal per serviciu de păstrat în jurnalele Redis
LOG_LINES=9999
# Subrețea internă IPv4 /24, format n.n.n (se extinde la n.n.n.0/24)
# Utilizați numai adrese IPv4 private, consultați https://en.wikipedia.org/wiki/Private_network#Private_IPv4_addresses
IPV4_NETWORK=172.22.1
# Subrețea IPv6 internă în fc00::/7
# Utilizați numai adrese IPv6 private, consultați https://en.wikipedia.org/wiki/Private_network#Private_IPv6_addresses
IPV6_NETWORK=fd4d:6169:6c63:6f77::/64
# Utilizați acest IPv4 pentru conexiuni de ieșire (SNAT)
#SNAT_TO_SOURCE=
# Utilizați acest IPv6 pentru conexiuni de ieșire (SNAT)
#SNAT6_TO_SOURCE=
# Creați sau înlocuiți o cheie API pentru interfața de utilizare web
# Trebuie să definiți API_ALLOW_FROM, care este o listă de adrese IP separate prin virgulă
# O cheie API definită ca API_KEY are acces de citire-scriere
# O cheie API definită ca API_KEY_READ_ONLY are acces numai pentru citire
# Caractere permise pentru API_KEY și API_KEY_READ_ONLY: a-z, A-Z, 0-9, -
# Puteți defini API_KEY și/sau API_KEY_READ_ONLY
#API_KEY=
#API_KEY_READ_ONLY=
#API_ALLOW_FROM=172.22.1.1,127.0.0.1
# mail_home este ~/Maildir
MAILDIR_SUB=Maildir
# Sesiunea SOGo expiră în minute
SOGO_EXPIRE_SESSION=480
# DOVECOT_MASTER_USER și DOVECOT_MASTER_PASS trebuie furnizate ambele. Fără caractere speciale.
# Goliți în mod implicit pentru a genera automat utilizatorul principal și parola la pornire.
# Utilizatorul se extinde la [email protected]
# LĂSAȚI GOL DACĂ NE ESTE SIGUR
DOVECOT_MASTER_USER=
# LĂSAȚI GOL DACĂ NE ESTE SIGUR
DOVECOT_MASTER_PASS=
# Letâs Encrypt informațiile de contact pentru înregistrare
# Opțional: lăsați gol pentru niciunul
# Această valoare este folosită numai la prima comandă!
# Setarea lui la un moment ulterior va necesita următorii pași:
# https://mailcow.github.io/mailcow-dockerized-docs/debug-reset_tls/
ACME_CONTACT=
# Verificarea producătorului dispozitivului WebAuthn
# După setarea WEBAUTHN_ONLY_TRUSTED_VENDORS=y numai dispozitivele de la producători de încredere sunt permise
# certificate rădăcină pot fi plasate pentru validare sub mailcow-dockerized/data/web/inc/lib/WebAuthn/rootCertificates
WEBAUTHN_ONLY_TRUSTED_VENDORS=n
Site.conf
Server {
Ascultă 80 default_server;
Ascultă [::]:80 default_server;
Includeți /etc/nginx/conf.d/server_name.active;
Dacă ( $request_uri ~* â%0A|%0Dâ ) { returnează 403; }
Returnează 301 https://$host$uri$is_args$args;
}
Redirect.conf
Server {
Rădăcină /web;
Ascultă 80 default_server;
Ascultă [::]:80 default_server;
Includeți /etc/nginx/conf.d/server_name.active;
Dacă ( $request_uri ~* â%0A|%0Dâ ) { returnează 403; }
Locație ^~ /.well-known/acme-challenge/ {
Permiteți totul;
Default_type âtext/plainâ;
}
Locație / {
Returnează 301 https://$host$uri$is_args$args;
}
}