Wyzwanie i najważniejsza zasada (proxied = false)
Przenosząc obsługę DNS do Cloudflare dla domeny, która posiada pocztę e-mail w OVH, musimy ręcznie zdefiniować wszystkie rekordy odpowiedzialne za routing i bezpieczeństwo poczty.
⚠️ ZŁOTA ZASADA POCZTY W CLOUDFLARE:
Rekordy DNS powiązane bezpośrednio z obsługą poczty (MX oraz rekordy CNAME / A takie jakimap,smtp,pop3) BEZWZGLĘDNIE MUSZĄ mieć wyłączone proxy (proxied = false).
Cloudflare proxy obsługuje wyłącznie ruch HTTP/HTTPS na wybranych portach. Protokoły pocztowe (SMTP na porcie 25/465/587, IMAP na porcie 143/993 itp.) nie są wspierane przez darmowe proxy Cloudflare. Pozostawienie ikony pomarańczowej chmury (proxied) na tych rekordach całkowicie zablokuje możliwość wysyłania i odbierania poczty w programach takich jak Outlook czy Thunderbird.
Pełna konfiguracja (MX, SPF, DKIM, DMARC, DNSSEC)
Aby poczta OVH działała bezbłędnie, była bezpieczna, a wysyłane wiadomości nie trafiały do spamu (dzięki wysokiej reputacji domeny), należy wdrożyć pięć filarów uwierzytelniania poczty.
1. Rekordy MX (Mail Exchange)
Wskazują serwerom na świecie, gdzie mają kierować pocztę przychodzącą dla Twojej domeny. OVH wymaga trzech serwerów o różnych priorytetach.
locals {
ovh_mx_servers = {
"mx1.mail.ovh.net" = 1
"mx2.mail.ovh.net" = 2
"mx3.mail.ovh.net" = 3
}
}
resource "cloudflare_record" "mx" {
for_each = local.ovh_mx_servers
zone_id = cloudflare_zone.nowa_domena.id
name = "@"
type = "MX"
content = each.key
priority = each.value
}
2. Rekordy CNAME dla konfiguracji klientów poczty
Ułatwiają użytkownikom konfigurację programów pocztowych poprzez standardowe nazwy hostów oraz mechanizmy autowykrywania (autoconfig, autodiscover). Pamiętaj: proxied = false!
locals {
ovh_mail_cnames = {
imap = "ssl0.ovh.net"
mail = "ssl0.ovh.net"
smtp = "ssl0.ovh.net"
autoconfig = "mailconfig.ovh.net"
autodiscover = "mailconfig.ovh.net"
}
}
resource "cloudflare_record" "mail_cnames" {
for_each = local.ovh_mail_cnames
zone_id = cloudflare_zone.nowa_domena.id
name = each.key
content = each.value
type = "CNAME"
proxied = false # Musi być FALSE!
}
3. SPF (Sender Policy Framework)
Rekord SPF typu TXT definiuje, które serwery mają prawo wysyłać wiadomości e-mail w imieniu Twojej domeny. Dla OVH standardowa wartość to włączenie serwerów wysyłkowych OVH (include:mx.ovh.com).
resource "cloudflare_record" "spf" {
zone_id = cloudflare_zone.nowa_domena.id
name = "@"
type = "TXT"
content = "\"v=spf1 include:mx.ovh.com ~all\""
allow_overwrite = true
}
Znaczenie końcówki:
~all(SoftFail) – Wiadomości z innych serwerów będą przyjmowane, ale mogą być oznaczone jako podejrzane (zalecane na czas testów).-all(HardFail) – Serwery odbiorcze powinny kategorycznie odrzucać wiadomości pochodzące z serwerów innych niż OVH (najwyższe bezpieczeństwo).
4. DKIM (DomainKeys Identified Mail)
DKIM dodaje do nagłówków wiadomości podpis kryptograficzny, który odbiorca weryfikuje kluczem publicznym opublikowanym w DNS domeny. Zapobiega to modyfikacji treści e-maila w locie. OVH dostarcza DKIM w postaci rekordów CNAME delegowanych do ich infrastruktury (stosując rotację kluczy za pomocą dwóch selektorów).
locals {
dkim_selectors = {
"selector1" = { name = "ovhmoXXXXXXX-selector1._domainkey", content = "ovhmoXXXXXXX-selector1._domainkey.XXXXX.ah.dkim.mail.ovh.net" }
"selector2" = { name = "ovhmoXXXXXXX-selector2._domainkey", content = "ovhmoXXXXXXX-selector2._domainkey.XXXXX.ah.dkim.mail.ovh.net" }
}
}
resource "cloudflare_record" "dkim" {
for_each = local.dkim_selectors
zone_id = cloudflare_zone.nowa_domena.id
name = each.value.name
content = each.value.content
type = "CNAME"
proxied = false
}
(Uwaga: Dokładne nazwy selektorów i ich wartości docelowe należy pobrać z panelu administracyjnego OVH w zakładce e-mail dla danej domeny).
5. DMARC (Domain-based Message Authentication, Reporting, and Conformance)
DMARC spina SPF i DKIM, określając, jak serwer odbiorcy ma traktować e-maile, które nie przeszły tych testów. Pozwala również na otrzymywanie raportów o próbach podszywania się pod naszą domenę.
resource "cloudflare_record" "dmarc" {
zone_id = cloudflare_zone.nowa_domena.id
name = "_dmarc"
type = "TXT"
content = "\"v=DMARC1; p=none; rua=mailto:[email protected]\""
}
Wyjaśnienie polityk (p):
p=none– Tryb monitorowania. Serwery dostarczają pocztę i wysyłają raporty o błędach na adres w tagurua.p=quarantine– Podejrzane wiadomości trafiają do folderu Spam/Kwarantanna odbiorcy.p=reject– Wiadomości niespełniające kryteriów są natychmiast odrzucane przez serwer odbiorczy (najwyższy stopień ochrony).
6. Bonus: DNSSEC (Domain Name System Security Extensions)
DNSSEC chroni przed fałszowaniem odpowiedzi DNS (atak typu DNS Cache Poisoning).
- W panelu Cloudflare dla danej strefy przechodzimy do zakładki DNS -> Settings i klikamy Enable DNSSEC.
- Cloudflare wygeneruje parametry rekordu DS (Key Tag, Algorithm, Digest Type, Digest).
- Logujemy się do panelu OVH (gdzie zakupiono domenę) i w konfiguracji domeny (zakładka DNSSEC) dodajemy nowy rekord DS, wpisując dane otrzymane z Cloudflare.