การใช้ 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 secure 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
#--------------------------------
# การกำหนดค่า UI ของเว็บ mailcow
#--------------------------------
# example.org คือ _not_ ชื่อโฮสต์ที่ถูกต้อง ใช้ fqdn ที่นี่
# ผู้ดูแลระบบเริ่มต้นคือ âadminâ
# รหัสผ่านเริ่มต้นคือ âmoohooâ
MAILCOW_HOSTNAME=mail.example.com
# อัลกอริทึมแฮชรหัสผ่าน
# รองรับเฉพาะอัลกอริทึมแฮชรหัสผ่านบางตัวเท่านั้น สำหรับรายการโครงร่างที่รองรับทั้งหมด
# ดู https://mailcow.github.io/mailcow-dockerized-docs/model-passwd/
MAILCOW_PASS_SCHEME=BLF-CRYPT
#--------------------------------
# การกำหนดค่าฐานข้อมูล SQL
#--------------------------------
DBNAME=ตัวอย่าง
DBUSER=ตัวอย่าง
# โปรดใช้สตริงตัวอักษรและตัวเลขแบบสุ่ม (A-Za-z0-9)
DBPASS=*************
DBROOT=*************
#--------------------------------
# การโยง HTTP/S
#--------------------------------
# คุณควรใช้ HTTPS แต่ในกรณีของ SSL offloaded reverse proxies:
# อาจสำคัญ: สิ่งนี้จะเปลี่ยนการผูกภายในคอนเทนเนอร์ด้วย
# หากคุณใช้พร็อกซีภายใน Docker ให้ชี้ไปที่พอร์ตที่คุณตั้งค่าด้านล่าง
# ห้าม _not_ ใช้ 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
SMTP_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
# เขตเวลาของคุณ
# ดู https://en.wikipedia.org/wiki/List_of_tz_database_time_zones สำหรับรายการเขตเวลา
# ใช้แถวชื่อ âTZ ชื่อฐานข้อมูลâ + ให้ความสนใจสำหรับแถว âNotesâ
TZ=****
#แก้ไขชื่อโครงการ
#กรุณาใช้ตัวพิมพ์เล็กเท่านั้น
COMPOSE_PROJECT_NAME=mailcowdockerized
# ตั้งค่านี้เป็น âallowâ เพื่อเปิดใช้งานผู้ใช้หลอกทุกคน ปิดใช้งานโดยค่าเริ่มต้น
# เมื่อเปิดใช้งาน สามารถสร้าง 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
#
ADDITIONAL_SAN=
# ชื่อเซิร์ฟเวอร์เพิ่มเติมสำหรับ mailcow UI
#
# ระบุที่อยู่อื่นสำหรับ mailcow UI เพื่อตอบกลับ
# สิ่งนี้มีประโยชน์เมื่อคุณตั้งค่า mail.* เป็น ADDITIONAL_SAN และต้องการให้แน่ใจว่า mail.maildomain.com จะชี้ไปที่ mailcow UI เสมอ
# หากชื่อเซิร์ฟเวอร์ไม่ตรงกับไซต์ที่รู้จัก Nginx จะตัดสินใจโดยการเดาที่ดีที่สุดและอาจเปลี่ยนเส้นทางผู้ใช้ไปยังรูทเว็บที่ไม่ถูกต้อง
# คุณสามารถเข้าใจสิ่งนี้ได้ว่าเป็นคำสั่ง server_name ใน Nginx
# รายการคั่นด้วยเครื่องหมายจุลภาคโดยไม่มีช่องว่าง! ตัวอย่าง: ADDITIONAL_SERVER_NAMES=a.b.c,d.e.f
ADDITIONAL_SERVER_NAMES=
# ข้ามการทำงาน ACME (acme-mailcow, Letâs Encrypt certs) â y/n
SKIP_LETS_ENCRYPT=ย
# สร้างใบรับรองแยกต่างหากสำหรับทุกโดเมน â y/n
# สิ่งนี้จะอนุญาตให้เพิ่มมากกว่า 100 โดเมน แต่ไคลเอนต์อีเมลบางตัวจะไม่สามารถเชื่อมต่อกับชื่อโฮสต์อื่นได้
# ดู https://wiki.dovecot.org/SSL/SNIClientSupport
ENABLE_SSL_SNI=y
# ข้ามการตรวจสอบ IPv4 ในคอนเทนเนอร์ ACME â y/n
SKIP_IP_CHECK=น
# ข้ามการยืนยัน HTTP ในคอนเทนเนอร์ ACME â y/n
SKIP_HTTP_VERIFICATION=n
# ข้ามโปรแกรมป้องกันไวรัส ClamAV (clamd-mailcow) (Rspamd จะตรวจหาคอนเทนเนอร์ ClamAV ที่หายไปโดยอัตโนมัติ) â y/n
SKIP_CLAMD=น
# ข้าม SOGo: จะปิดใช้งานการผสานรวม SOGo และด้วยเหตุนี้เว็บเมล โปรโตคอล DAV และการสนับสนุน ActiveSync (ทดลอง ไม่สนับสนุน ไม่ได้ใช้งานอย่างสมบูรณ์) â y/n
SKIP_SOGO=n
# ข้าม Solr ในระบบหน่วยความจำต่ำหรือหากคุณไม่ต้องการจัดเก็บดัชนีอีเมลที่อ่านได้ของคุณใน solr-vol-1
SKIP_SOLR=n
# ขนาดฮีป Solr เป็น MB ไม่มีคำแนะนำ โปรดดูเอกสาร Solr
# Solr มีแนวโน้มที่จะเรียกใช้ OOM และควรได้รับการตรวจสอบ ไม่แนะนำให้ตั้งค่า Solr ที่ไม่ได้ตรวจสอบ
SOLR_HEAP=1024
# อนุญาตให้ผู้ดูแลระบบเข้าสู่ระบบ SOGo ในฐานะผู้ใช้อีเมล (โดยไม่ต้องใช้รหัสผ่าน)
ALLOW_ADMIN_EMAIL_LOGIN=n
# เปิดใช้งาน watchdog (watchdog-mailcow) เพื่อรีสตาร์ทคอนเทนเนอร์ที่ไม่แข็งแรง
USE_WATCHDOG=ย
# ส่งการแจ้งเตือนสุนัขเฝ้าบ้านทางไปรษณีย์ (ส่งจาก 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=ไม่มี
# หัวเรื่องสำหรับจดหมายเฝ้าบ้าน ค่าเริ่มต้นคือ âWatchdog ALERTâ ตามด้วยข้อความแสดงข้อผิดพลาด
#WATCHDOG_SUBJECT=
# ตรวจสอบว่า mailcow เป็นรีเลย์เปิดหรือไม่ ต้องมี SAL การตรวจสอบเพิ่มเติมจะตามมา
# https://www.servercow.de/mailcow?lang=th
# https://www.servercow.de/mailcow?lang=de
#ไม่มีการเก็บข้อมูล เลือกใช้และไม่ระบุตัวตน
# จะใช้งานได้กับการตั้งค่า mailcow ที่ไม่ได้แก้ไขเท่านั้น
WATCHDOG_EXTERNAL_CHECKS=n
# เปิดใช้งานการบันทึกข้อมูลอย่างละเอียดของ watchdog
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 สำหรับเว็บ UI
# คุณ _must_ กำหนด 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=
# Letâs Encrypt ข้อมูลติดต่อการลงทะเบียน
# ทางเลือก: เว้นว่างไว้สำหรับไม่มี
#ราคานี้เฉพาะการสั่งซื้อครั้งแรกเท่านั้น!
# การตั้งค่าในภายหลังจะต้องมีขั้นตอนต่อไปนี้:
# 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
ไซต์.conf
เซิร์ฟเวอร์ {
ฟัง 80 default_server;
ฟัง [::]:80 default_server;
รวม /etc/nginx/conf.d/server_name.active;
ถ้า ( $request_uri ~* â%0A|%0Dâ ) { กลับ 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â ) { กลับ 403; }
ที่ตั้ง ^~ /.well-known/acme-challenge/ {
อนุญาตทั้งหมด
Default_type âข้อความ/ธรรมดาâ;
}
ที่ตั้ง / {
ส่งคืน 301 https://$host$uri$is_args$args;
}
}