# Wpływ Kodowania Treści na Uwierzytelnienie DKIM

DKIM (*DomainKeys Identified Mail*) to mechanizm, który pozwala serwerom odbiorczym zweryfikować, czy treść wiadomości nie została zmodyfikowana w trakcie transmisji oraz czy faktycznie pochodzi od deklarowanego nadawcy.&#x20;

Poprawnie działający DKIM jest jednym z kluczowych elementów wpływających na dostarczalność wiadomości.

### **Błędy weryfikacji DKIM (Body Hash Error)**

Może zdarzyć się sytuacja, w której mimo poprawnego uwierzytelnienia domeny (prawidłowy rekord w DNS), serwery odbiorcze zwracają błędy wskazujące na naruszenie integralności treści:

`dkim=fail (body has been altered)` lub `dkim=fail (body hash did not verify)`

Jedną z najczęstszych przyczyn takiego stanu rzeczy jest nieodpowiedni dobór nagłówka **Content-Transfer-Encoding**.

### **Problem z kodowaniem 8bit i 7bit**

Konfiguracje często spotykane, ale niezalecane dla nowoczesnych wiadomości HTML:

* `Content-Transfer-Encoding: 8bit`
* `Content-Transfer-Encoding: 7bit`

Kodowanie `8bit` nie jest zalecane dla wiadomości w formacie HTML, ponieważ nie gwarantuje, że treść pozostanie identyczna podczas przesyłu między kolejnymi serwerami pocztowymi (MTA). Starsze serwery pośredniczące lub filtry antyspamowe mogą nie obsługiwać rozszerzenia 8BITMIME, co wymusza konwersję treści. W praktyce może to prowadzić do:

* zmiany lub uszkodzenia znaków diakrytycznych,
* modyfikacji białych znaków (spacje, tabulatory),
* zmiany znaków końca linii (CRLF).

Nawet minimalna zmiana w treści (choćby jednego bajtu) powoduje, że suma kontrolna (hash) obliczona na potrzeby DKIM przestaje się zgadzać z treścią otrzymaną, a podpis zostaje uznany za nieprawidłowy (`fail`).

### **Rekomendowane rozwiązanie: Quoted-Printable**

Zalecaną i najbezpieczniejszą konfiguracją, zwłaszcza dla wiadomości HTML zawierających polskie znaki, jest:

`Content-Transfer-Encoding: quoted-printable`

Kodowanie quoted-printable (lub alternatywnie base64) jest uznawane za tzw. "transport-safe":

* zapewnia stabilność treści wiadomości niezależnie od serwerów pośredniczących.
* eliminuje ryzyko modyfikacji znaków w trakcie transmisji.
* jest w pełni kompatybilne z mechanizmem DKIM.
* jest standardem rekomendowanym w nowoczesnych systemach mailingowych.

Dzięki zastosowaniu tego kodowania, treść podpisana kluczem DKIM dociera do odbiorcy w niezmienionej formie technicznej, co pozwala na pomyślną weryfikację (**`dkim=pass`**).

#### **Podsumowanie i dobre praktyki**

1. **Stosuj Quoted-Printable:** Zawsze ustawiaj **`Content-Transfer-Encoding: quoted-printable`** dla wiadomości tekstowych i HTML. Unikaj kodowania **`8bit`**, szczególnie przy wysyłkach masowych.
2. **Weryfikuj biblioteki:** W przypadku korzystania z własnych bibliotek mailingowych (np. PHPMailer, SwiftMailer), upewnij się, że są one zaktualizowane i mają poprawnie skonfigurowane kodowanie treści.
3. **Diagnostyka:** Jeśli obserwujesz błędy typu `body hash did not verify`, w pierwszej kolejności zweryfikuj nagłówki wiadomości i sposób kodowania treści – jest to najczęstsza przyczyna problemów z walidacją DKIM przy poprawnej konfiguracji DNS.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://newpanel.docs.emaillabs.io/poradniki/techniczne-aspekty-e-maili-i-integracji/wplyw-kodowania-tresci-na-uwierzytelnienie-dkim.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
