# Mail Diagnostika — info@krcma-petric.com → SPAM

**Server:** Rocky Linux 9.7 (Hetzner vServer, KVM)  
**Panel:** CWP Pro  
**IP:** 91.98.172.231  
**Hostname:** server.konoba.hr  
**PTR (rDNS):** mail.konoba.hr  
**Domena:** krcma-petric.com (DNS na Cloudflare)  

---

## Pronađeni problemi (po prioritetu)

---

### 1. ✅ RIJEŠENO — OpenDKIM milter dodan u Postfix

Postfix je sad konfiguriran da potpisuje mail kroz OpenDKIM.

Dodano u `/etc/postfix/main.cf`:
```
# OpenDKIM milter
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
milter_default_action = accept
milter_protocol = 6
```

OpenDKIM SigningTable i KeyTable već su imali unos za krcma-petric.com:
- `SigningTable`: `*@krcma-petric.com default._domainkey.krcma-petric.com`
- `KeyTable`: `default._domainkey.krcma-petric.com krcma-petric.com:default:/etc/opendkim/userkeys/krcma-petric.com/default.private`

Postfix reloadан: `systemctl reload postfix` ✓

---

### 2. ✅ RIJEŠENO — DKIM DNS TXT record dodan u Cloudflare

**Važno:** Server ima i **lokalni BIND DNS** koji ima DKIM record za krcma-petric.com. Ali to je potpuno nebitno.  
**Cloudflare je autoritativni nameserver za krcma-petric.com** (`ali.ns.cloudflare.com`, `jeff.ns.cloudflare.com`). Cijeli svijet (Gmail, Outlook, itd.) pita **Cloudflare**, ne lokalni BIND.

Provjera prema Cloudflare (autoritativno):
```
dig default._domainkey.krcma-petric.com TXT → NXDOMAIN
```

Provjera lokalnog BIND-a (nebitno za vanjske primatelje):
```
dig @localhost default._domainkey.krcma-petric.com TXT
→ "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GN..."  ← POSTOJI lokalno
```

Javni ključ postoji u lokalnom BIND-u — **taj isti ključ treba kopirati u Cloudflare DNS**.

**Popravak:**
U Cloudflare DNS dodati TXT record:
- **Name:** `default._domainkey`
- **Value:** `v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/+d81JAlpAFowl/Qy6vKLWLYBoLATk1YI0y7h69DNg+zy07uwX9NUx/911ipxJ3u+wgceMB3B3VZIig0VsKQZCcS96W9BkwMceG9rCBLX48mz6FLjcb6VnUumcT0aHOyK/kocm/1xm0n3zsqumG+1Sfb0vnjd43fQciLInuf6yQIDAQAB`
- **TTL:** Auto
- **Proxy:** DNS only (sivi oblak — obavezno)

---

### 3. ✅ DJELOMIČNO RIJEŠENO — DMARC promijenjen na `p=none`

**Trenutni DMARC record:**
```
v=DMARC1; p=quarantine; rua=mailto:kristijanCPn@gmail.com; ruf=mailto:kristijanCPn@gmail.com; adkim=s; aspf=s; fo=1
```

- `p=quarantine` → ako DKIM ili SPF alignment ne prolaze → mail ide direktno u spam/quarantine
- `adkim=s` (strict) → DKIM signing domain mora biti TOČNO `krcma-petric.com`
- `aspf=s` (strict) → envelope-from (Return-Path) mora biti TOČNO `@krcma-petric.com`

**Problem:** Dok se DKIM ne popravi (problemi 1 i 2), ovaj DMARC record garantira spam.

Privremeno je postavljeno `p=none` u Cloudflare. 

**Sljedeći korak (nakon testiranja):** Promijeniti na `p=quarantine` ili `p=reject` i preporučuje se ublažiti na `adkim=r; aspf=r` (relaxed alignment):
```
v=DMARC1; p=quarantine; rua=mailto:kristijancpn@gmail.com; adkim=r; aspf=r; fo=1
```

---

### 4. OZBILJNO — Hostname ne odgovara PTR zapisu

| | Vrijednost |
|---|---|
| `myhostname` (Postfix) | `server.konoba.hr` |
| PTR (rDNS) za 91.98.172.231 | `mail.konoba.hr` |
| Provjera: `mail.konoba.hr` → A | `91.98.172.231` ✓ |

Postfix se predstavlja (EHLO) kao `server.konoba.hr`, ali PTR kaže `mail.konoba.hr`. Receiving mail serveri (Gmail, Outlook) rade **FCrDNS** (Forward-Confirmed rDNS) provjeru i penaliziraju mismatch.

**Opcija A:** Promijeniti hostname servera na `mail.konoba.hr`:
```bash
hostnamectl set-hostname mail.konoba.hr
```
I unjeti `A` record `mail.konoba.hr → 91.98.172.231` u konoba.hr DNS (ako ne postoji već).

**Opcija B:** Promijeniti PTR zapis kod Hetzner panela da pokazuje na `server.konoba.hr` i dodati `A` record `server.konoba.hr → 91.98.172.231` u konoba.hr DNS (već ima — radi).

U CWP Pro: **Main Settings → Change Hostname** (sinkronizira i Postfix).

---

### 5. ✅ RIJEŠENO — MX record ispravno na root domeni

Iz Cloudflare DNS exporta:
```
mail.krcma-petric.com.  MX  5 mail.krcma-petric.com.
```

MX record je postavljen na `mail.krcma-petric.com`, a **treba biti na root domeni `krcma-petric.com`**.

Kad mail server pokušava dostaviti mail na `info@krcma-petric.com`, gleda MX za `krcma-petric.com` → **ne nalazi ništa** → fallback na A record ili greška dostave.

Provjera potvrđuje ispravan MX:
```
dig krcma-petric.com MX +short
→ 5 mail.krcma-petric.com.
```

---

### 6. UMJERENO — SPF alignment može failati (strict mode)

**Trenutni SPF:**
```
v=spf1 a mx ip4:91.98.172.231 -all
```

SPF tehnički **prolazi** jer je IP `91.98.172.231` uključen. Međutim, `myorigin` u Postfixu je `$myhostname = server.konoba.hr`, što znači da envelope-from (Return-Path) može biti `@konoba.hr` ili `@server.konoba.hr` umjesto `@krcma-petric.com`.

Uz `aspf=s` (strict DMARC alignment), envelope-from mora biti točno `@krcma-petric.com` — mismatch → SPF alignment fail → DMARC kvari.

**Provjera:** Pogledati mail headere (X-Original-To, Return-Path) poslanog maila. Return-Path treba biti `info@krcma-petric.com`.

---

## Situacija sa SPF zapisom

Cloudflare (autoritativno — što svijet vidi):
```
v=spf1 a mx ip4:91.98.172.231 -all
```

Lokalni BIND (nebitno za vanjske primatelje):
```
v=spf1 +a +mx +ip4:91.98.172.231 ~all
```

**Razlika je značajna:** Cloudflare ima `-all` (hard fail), lokalni BIND ima `~all` (soft fail). Za deliverability je `-all` stroži i može povećati spam score.

**Preporučena promjena u Cloudflare** — promijeniti na `~all`:
```
v=spf1 a mx ip4:91.98.172.231 ~all
```

**Napomena:** Cloudflare je konfiguriran kao NS-only / DNS-only — Cloudflare je samo autoritativni nameserver, ne proxy. Svi A recordi (`krcma-petric.com`, `mail.krcma-petric.com`, `webmail.krcma-petric.com`) ukazuju na `91.98.172.231`. Ovo je ispravna konfiguracija.

---

## Permanentni redirect konoba.hr → krcma-petric.com

**Status: ✅ AKTIVNO**

Kreiran Apache userdata conf `/usr/local/apache/conf/userdata/konoba/konoba.hr/redirect.conf`:
```apache
RewriteEngine On
RewriteRule ^(.*)$ https://krcma-petric.com$1 [R=301,L]
```

Testirano:
```
curl -sI https://konoba.hr/
→ HTTP/2 301
→ location: https://krcma-petric.com/
```

HTTP (port 80) → HTTPS: Nginx radi automatski (postojeća konfiguracija)  
HTTPS (port 443): Apache vraća 301 → krcma-petric.com ✓

---

## Sažetak akcijskog plana

| # | Akcija | Status | Gdje |
|---|--------|--------|------|
| 1 | Milter u Postfix + reload | ✅ RIJEŠENO | SSH/root |
| 2 | DKIM TXT record u Cloudflare | ✅ RIJEŠENO | Cloudflare |
| 3 | DMARC privremeno na `p=none` | ✅ RIJEŠENO | Cloudflare |
| 4 | MX record na root domenu | ✅ RIJEŠENO | Cloudflare |
| 5 | Redirect konoba.hr → krcma-petric.com | ✅ RIJEŠENO | Apache userdata |
| 6 | Uskladiti hostname i PTR (Hetzner + CWP) | ⚠️ PREOSTALO | Hetzner panel |
| 7 | DMARC promijeniti na `p=quarantine; adkim=r; aspf=r` | ⚠️ NAKON TESTA | Cloudflare |
| 8 | SPF promijeniti s `-all` na `~all` | ⚠️ PREPORUČENO | Cloudflare |
| 9 | Testirati na mail-tester.com | ⚠️ PREOSTALO | Web |

---

## Testiranje nakon popravka

```bash
# Testirati DKIM potpis (poslati test mail i provjeriti headere)
echo "Test" | mail -s "DKIM test" test@mail-tester.com

# Provjeriti queue
mailq

# Gledati logove
tail -f /var/log/maillog
```

Online alati za provjeru:
- [mail-tester.com](https://www.mail-tester.com) — sveobuhvatni test (daje ocjenu)
- [mxtoolbox.com](https://mxtoolbox.com) — MX, SPF, DKIM, DMARC
- [dmarcanalyzer.com](https://www.dmarcanalyzer.com/dkim/dkim-check/) — DKIM provjera
