Notice: query (INSERT INTO lemat_stats_browser (day,browser,ilosc,internal) VALUES ('2024-04-25','Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)',1,'2')) failed at /home/lemat/lemat.priv.pl/stats.php:151: Array ( [0] => 22001 [1] => 1406 [2] => Data too long for column 'browser' at row 1 ) in /home/lemat/lemat.priv.pl/panel_adm/dbclass.inc.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at /home/lemat/lemat.priv.pl/panel_adm/dbclass.inc.php:15) in /home/lemat/lemat.priv.pl/stats.php on line 174
DMARC - Lemat, strona prywatna
Lemat, strona prywatna

opendmarc+opendkim+amavisd-milter

https://dmarc.org/ jest systemem łączącym SPF (wraz ze sprawdzaniem nagłówka From) oraz DKIM. Poniżej konfiguracja tego combo dla postfixa z działającym uprzednio amavisem. Założenie jest takie: poczta przychodząca od autoryzowanych użykowników ma być przyjmowana do kolejki a następnie skanowana amavisem. Reszta poczty ma być skanowana opendkim+opendmarc+amavis zanim trafi do kolejki, komunikat o odrzuceniu emaila ma być prezentowany serwerowi nadawcy jeszcze w sesji SMTP. W tym celu użyjemy mechanizmów miltrów.

instalujemy paczki:

apt install opendkim opendmarc amavisd-milter

Powyższe to są trzy daemony, które mogą nasłuchiwać albo na socketach albo na interfejsie sieciowym. Ja wybrałem konfigurację po interfejsie sieciowym. Zatem:

/etc/default/opendmarc

SOCKET="inet:10027@localhost"

/etc/default/opendkim

SOCKET="inet:10028@localhost"

/etc/default/amavisd-milter

MILTERSOCKET=inet:10029@127.0.0.1
EXTRAPARAMS="-m 4" # ten parametr musi być równy $max_servers z konfiguracji amavisa oraz kolumnie maxproc w master.cf dla transportu smtp-amavis

 /etc/opendkim.conf

AuthservID            HOSTNAME
Mode                    v

/etc/opendmarc.conf

AuthservID HOSTNAME
HistoryFile /var/run/opendmarc/opendmarc.dat
SPFIgnoreResults        true
SPFSelfValidate         true

IgnoreAuthenticatedClients true

Ważna uwaga: parametry AuthservID w konfiguracjach opendmarc i opendkim muszą być identyczne

/etc/postfix/main.cf

# kolejność: opendkim, opendmarc, amavisd-milter
smtpd_milters = inet:localhost:10028, inet:localhost:10027, inet:localhost:10029
# nie ustawiamy amavisa jako content-filtra
smtpd_proxy_filter=
content_filter=

/etc/postfix/master.cf

smtp       inet  n       -       y       -       20      smtpd
submission inet  n       -       y       -       -       smtpd
  -o syslog_name=submission
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=yes
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_client_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=reject_sender_login_mismatch,permit
  -o receive_override_options=no_address_mappings,no_milters
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
  -o smtpd_proxy_filter=
  -o content_filter=smtp-amavis:[127.0.0.1]:10024
smtps      inet  n       -       y       -       -       smtpd
  -o syslog_name=smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_client_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=reject_sender_login_mismatch,permit
  -o receive_override_options=no_address_mappings,no_milters
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
  -o smtpd_proxy_filter=
  -o content_filter=smtp-amavis:[127.0.0.1]:10024
smtp-amavis unix - - n - 4 smtp
   -o smtp_data_done_timeout=1200
   -o disable_dns_lookups=no
   -o smtp_send_xforward_command=yes
127.0.0.1:10025 inet    n       -       n       -       -       smtpd
  -o smtpd_proxy_filter=
  -o content_filter=
  -o smtpd_restriction_classes=
  -o smtpd_client_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks=127.0.0.0/8
  -o mynetworks_style=host
  -o strict_rfc821_envelopes=no
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks,no_milters
  -o smtpd_client_connection_limit_exceptions=127.0.0.0/8
  -o smtpd_client_connection_count_limit=200
  -o smtpd_client_connection_rate_limit=200
  -o smtpd_client_recipient_rate_limit=1000
  -o smtpd_client_message_rate_limit=1000
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8
  -o smtpd_authorized_xclient_hosts=127.0.0.0/8

Czyli tak: na porcie 25 postfix odpali po kolei trzy miltry i ich wynik przekaże do serwera nadawcy jeszcze w sesji.
na portach 587 i 465 postfix nie odpali żadnego miltra, za to przyjmie emaila do kolejki i przekaże go do amavisa nasłuchującego na 10024
z amavisa email powróci do postfixa nasłuchującego na porcie 10025

Amavisa używam zarówno do skanowania poczty przy/prze/wy-chodzącej jak i do podpisywania DKIM wiadomości wychodzących z lokalnych domen.

Najpierw trzeba utworzyć klucze:

cd /etc/amavis
amavisd-new genrsa dkim.pem 

/etc/amavis/conf.d/50-user

$enable_dkim_verification = 0;
$enable_dkim_signing = 1;
dkim_key('lemat.priv.pl', 'mail', '/etc/amavis/dkim.pem');
@dkim_signature_options_bysender_maps = (
{ '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } );
@mynetworks = qw(127.0.0.0/8 192.168.0.0/16);  # list your internal networks

$interface_policy{'SOCK'} = 'DKIM_CHECK';
$policy_bank{'DKIM_CHECK'} = {
        protocol => 'AM.PDP',  # select Amavis policy delegation protocol
        originating => 1,
};

$interface_policy{'10024'} = 'DKIM_SIGN';
$policy_bank{'DKIM_SIGN'} = {
        originating => 1,
};

I dodać je do DNSów:

amavisd-new showkeys

pokaże nam klucze, które mamy dodać do dnsów. Razem z SPF i DMARC wygląda to tak:

               IN      TXT     "v=spf1 mx -all"
mail._domainkey   3600 TXT (
  "v=DKIM1; p="
  "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPBko3RtAXGVsEaybrFXhZNJN0"
  "E36faN0+/FClXYVyhvDnGIlKi+NlMwQ+S4F5m5+xD0BkAPIg6lT2WkdbxbsUQKxb"
  "eRB3gHDVdiRJzbZL1UaICkBYN90qJVQ/PogrqimT+AWkIw6yBGosjl2S5dzc2oaA"
  "eqSDrUCnjteldWPzXwIDAQAB")
_adsp._domainkey        IN TXT "dkim=all"
_dmarc IN TXT "v=DMARC1; p=reject; sp=reject; aspf=s; adkim=r; rua=mailto:postmaster@domena; fo=1; pct=100; ri=86400;"

Krótkie wyjaśnienie tego ostatniego:

p= polityka co odbiorca powinien zrobić z emailem, może być erject, może być quarantine
sp= polityka dla subdomen
aspf= polityka SPF, może być Relaxed, może być Strict
adkim= polityka DKIM, może być Relaxed, może być Strict
rua= adres email, na któwy będą wpływać raporty
fo= polityka generowania raportów
pct= procent emaili podlegających regułom
ri= report interval czyli odstęp miedzy raportami

Na stronie https://mxtoolbox.com/ możemy przetestować ustawienia DMARC, strona też objaśni użyte oznaczenia.
Najlepiej to też testować wysyłając emaila z/na @gmail.com

W nagłówkach emaila przychodzacego z domeny podpisujęcej emaile DKIMem i zabezpieczonej SPFem - do serwera z powyższą konfiguracją powinniśmy zobaczyć:

Authentication-Results: mail; dmarc=pass header.from=lemat.priv.pl
Authentication-Results: mail; dkim=pass
	reason="1024-bit key; unprotected key"
	header.d=lemat.priv.pl header.i=@lemat.priv.pl header.b=plUiyQ24;
	dkim-adsp=pass; dkim-atps=neutral

W nagłówku Authentication-Results: pierwszym wpisem jest HOSTNAME - sprawdźcie w testowych emailach czy na pewno jest to identyczne w obu nagłówkach.

Bug: IgnoreAuthenticatedClients true powinno ignorować klientów, którzy są zalogowani. Ale to nie działa w 1.3.0.


Data utworzenia : 2018-12-23, data aktualizacji :2020-12-04

Skomentuj ten tekst

Komentarze:

kanada
2019-03-26 08:38:04
amavis dual-socket?
Pytanie odnośnie integracji z amavisem. We wcześniejszych wpisach amavis nasłuchiwał na dwóch portach, 10024 i 10026, z czego część korespondencji przepuszczaliśmy przez podpisywanie, część nie. W tym wariancie również master postfixowy słuchał na 10025 i 10027.

Widzę, że teraz odszedłeś od tej metody. Możesz napisać dlaczego? Czy podana wyżej konfiguracja lepiej się sprawdza i nie ma potrzeby rozdzielania obu przypadków?

Jeśli tak faktycznie jest, czy powyższe to pełna konfiguracja postfix + amavis? Czy wymaga to jeszcze uzupełnienia o coś?

Setup fajny, bardzo uproszczony szczególnie w przypadku eliminacji dodatkowych portów zarówno po stronie mastera jak i amavisa.
Odpowiedź Lemata:
pozajączkowały ci się tutoriale? u mnie wcześniej amavis nasłuchiwał na 10024 i dostarczał do postfixa na 10025. Obecnie amavis nasłuchuje i na sockecie i na 10024 z różną konfiguracją dotyczącą podpisywania DKIM.
Protected by spf
[Nospam-PL.NET]
Seti@Home
www.php.net
© Lemat 2004 - ∞