Skonfiguruj DKIM (DomainKeys) dla Ubuntu, Postfix i Mailman


22

Używam Ubuntu 12.04 z Postfix i Mailman. Chcę skonfigurować DKIM . DomainKeys Identified Mail lub DKIM jest następcą „DomainKeys” firmy Yahoo. Zawiera identyfikacyjną pocztę Cisco.

Jakie są kroki konfiguracji?

Czy zaleca się opendkim?

Jedyne odniesienie, które mam, to HowToForge , ale wolę uzyskać pomoc tutaj (nawet jeśli jest to tylko potwierdzenie kroków pod tym linkiem). Właściwie myślę, że informacje w HowToForge są nieaktualne, ponieważ wspominają o filtrach dkim zamiast opendkim.

Odpowiedzi:


39

openDKIM i Postfix na Ubuntu Server 12.04LTS

Spróbuję wrócić i sformatować to lepiej. Ale ponieważ pojawiła się prośba o opublikowanie mojej odpowiedzi, chciałem ją teraz opublikować, zamiast czekać, aż będę miał czas na jej prawidłowe sformatowanie. Z powodu braku czasu całą swoją odpowiedź zawarłem w cytat blokowy. Mam nadzieję, że to rozwiązanie będzie pomocne.

Oto moje referencje:

a Wikipedia ma dobry wpis na ten temat

Co najmniej będziesz potrzebować:

  • Zrootuj dostęp do swojego serwera pocztowego
  • Dostęp do aktualizacji rekordów dns dla Twojej domeny

Zainstaluj opendkim z repozytoriów:

# sudo apt-get install opendkim opendkim-tools

Musisz zdecydować, jakiego „selektora” chcesz użyć. Selektor to w zasadzie słowo opisujące klawisz, którego chcesz użyć. Tutaj użyję selektora 201205, ponieważ klucz stał się ważny w maju 2012 r. (Spryt, co?). Podaję dwa przykłady różnorodności, które, mam nadzieję, dodadzą przejrzystości. Musisz tylko wygenerować JEDEN klucz. Podaję jednak oba przykłady, abyś mógł je porównać.

  • 201205 (1. klucz)
  • my_selector (drugi klawisz)

Moja domena będzie example.com, ale w drugim przykładzie użyję poddomeny:

  • przyklad.com (1. klucz)
  • mail.example.com (drugi klucz)

Postanowiłem pracować w następującym katalogu:

# mkdir /etc/opendkim/
# cd /etc/opendkim

Wygeneruj klucze w bieżącym katalogu, używając wybranego selektora i domeny.

# opendkim-genkey -s 201205 -d example.com

Być może musisz zmienić właściciela. Zobacz szczegóły w moim przykładzie dla drugiego klucza poniżej, aby dowiedzieć się, jaka powinna być własność i uprawnienia.

Najpierw sprawdź, czy istnieje opendkimużytkownik (identyfikatory użytkownika / grupy mogą być inne):

# grep opendkim /etc/passwd
opendkim:x:108:117::/var/run/opendkim:/bin/false

I prawdopodobnie musisz to zrobić:

# chmod 700 /var/run/opendkim

UWAGA: Następne dwa polecenia NIE są potrzebne w systemie Ubuntu 12.04. Ale jeśli powyższe polecenie nie pokazało, że użytkownik opendkim został poprawnie skonfigurowany, zrób to podobnie do tego:

# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim -c "OpenDKIM" opendkim
# chown opendkim:opendkim 201205.private   
# cat 201205.private 
-----BEGIN RSA PRIVATE KEY-----
ABCCXQ...[long string]...SdQaZw9
-----END RSA PRIVATE KEY-----

Teraz sprawdź klucz publiczny i zauważ, że jest błąd (w openDKIM 2.5.2 na Ubuntu 12.04)! Gdzie zawiera, ;=rsa;powinien zawierać ;k=rsa;. kBrakuje. Proszę wstawić

# cat 201205.txt
201205._domainkey IN TXT "v=DKIM1;=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

Po naprawieniu będzie wyglądać następująco:

201205._domainkey IN TXT "v=DKIM1;k=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

Co więcej, prawdopodobnie musisz uciec przed średnikami w ten sposób. Jeśli nie chcesz końcowego komentarza, po prostu go usuń. Należy również pamiętać, że należy dodać flagę t = y, aby wskazać serwerom odbierającym, że testujesz DKIM, ale jeszcze go nie aktywnie używasz. Pozostaje ci realny rekord zasobu:

201205._domainkey IN TXT "v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

Musisz opublikować treść powyższego klucza publicznego na swoim autorytatywnym serwerze DNS. Polecam użycie rekordu TXT. Wydaje się, że jest trochę kontrowersji, czy użyć rekordu SPF, czy obu typów. Po krótkiej lekturze zdecydowałem się pozostać przy typie rekordu TXT, chociaż nie sądzę, żeby to było ostatnie słowo na ten temat.

Powinieneś użyć krótkiego czasu wygaśnięcia (TTL), abyś mógł zmienić klucz bez czekania, aż rozpowszechni się przez DNS. Użyłem 180 sekund.

Drugi przykład generowania pary kluczy był dla mnie nieco trudniejszy. Opiszę co zrobiłem. Pierwszym elementem jest to, że użyłem wartości domeny „przyklad.com”, nawet jeśli klucz zostanie użyty dla „mail.example.com”. Doszedłem do tego metodą prób i błędów. Działa, podczas gdy korzystanie z „mail.example.com” nie działało. Niestety nie znam przyczyn tego. To naprawdę jedyna różnica, na którą się natknąłem, ale było to wystarczająco kłopotliwe, że czułem, że powinienem udokumentować swoje doświadczenia z używaniem subdomen. Żaden inny samouczek poziomu początkowego, który znalazłem, tego nie zrobił. Wygeneruj drugi klucz:

opendkim-genkey -s my_selector -d example.com

sprawdź własność i uprawnienia klucza prywatnego, jak wyżej. Oto jak powinny wyglądać:

# ls -la /etc/opendkim
-rw-------  1 opendkim opendkim  891 May 10 07:44 my_selector.private

Po opublikowaniu rekordu DNS sprawdź go za pomocą dig. Powinien zwrócić dokładnie to, co wpisałeś w rekordzie zasobów (RR).

$ dig 201205._domainkey.example.com txt +short
"v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

Teraz przetestuj klucz. Poniższe polecenia zakładają, że jesteś w katalogu, w którym znajduje się klucz (/ etc / opendkim dla mnie).

# opendkim-testkey -d example.com -s 201205 -k 201205.private -vvv
opendkim-testkey: key loaded from /etc/opendkim/201205.private
opendkim-testkey: checking key '201205._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Te wyniki są oczekiwane. „Klucz niezabezpieczony” nie oznacza błędu. Jest to oczekiwana konsekwencja nieużywania DNSSSEC. DNSSEC nadchodzi, ale według mojej lektury nie jest jeszcze gotowy na najwyższy czas.

Przykład z drugim kluczem:

# opendkim-testkey -d example.com -s my_selector -k /etc/opendkim/my_selector.private -vvvv
opendkim-testkey: key loaded from /etc/opendkim/my_selector.private
opendkim-testkey: checking key 'my_selector._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Pamiętaj, że opendkim zgłasza, że ​​klucz nie jest bezpieczny. Odnosi się to do faktu, że DNSSEC nie jest zaimplementowany na moim serwerze DNS i teoretycznie ktoś może przechwycić wyszukiwanie DNS i zastąpić go własnym kluczem.

Edytuj plik konfiguracyjny OpenDKIM:

# nano /etc/opendkim.conf
# cat /etc/opendkim.conf
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
Domain                  example.com
KeyFile                 /etc/opendkim/201205.private
Selector                201205
#
# Commonly-used options
Canonicalization        relaxed/simple
Mode                    sv
SubDomains              yes
# Log to syslog
Syslog                  yes
LogWhy                  yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask                   022
UserID                  opendkim:opendkim
#
KeyTable                /etc/opendkim/KeyTable
SigningTable            /etc/opendkim/SigningTable
ExternalIgnoreList      /etc/opendkim/TrustedHosts
InternalHosts           /etc/opendkim/TrustedHosts
#
Socket                  inet:8891@localhost
#EOF

Jeśli używasz mojego drugiego przykładu z domeną docelową „mail.example.com”, wpis nadal będzie odnosił się tylko do domeny głównej:

Domain                  example.com
KeyFile                 /etc/dkim/my_selector.private
Selector                my_selector 
-----

Uwaga z jednego z moich źródeł: Jeśli uruchamiasz wiele instancji Postfix, musisz dodać to do opendkim.conf dla każdej instancji (lub tych, których chcesz użyć opendkim)

Utwórz plik za pomocą edytora tekstu /etc/opendkim/TrustedHosts:

Dodaj domeny, nazwy hostów i / lub adresy IP, które powinny być obsługiwane przez OpenDKIM. Nie zapomnij localhost.

127.0.0.1
localhost
example.com
mail.example.com
192.168.1.100 #(IP address of your server, if applicable)

(ostatni wiersz powyżej prawdopodobnie nie będzie potrzebny. Jeśli masz adres IP do dodania, upewnij się, że używasz własnego, a nie powyższego przykładu).

Edytuj /etc/default/opendkim:

Usuń komentarz z tego wiersza i użyj portu 8891:

SOCKET="inet:8891@localhost" # listen on loopback on port

Upewnij się, że zapora sieciowa (iptables) zezwala na sprzężenie zwrotne na localhost:

sudo iptables -A INPUT -i lo -j ACCEPT

Następnie utwórz plik za pomocą edytora tekstu /etc/opendkim/KeyTablei dodaj domenę do KeyTable

Dodaj wiersz:

#EXAMPLE showing my 2nd key:
my_selector._domainkey.example.com example.com:my_selector:/etc/opendkim/my_selector.private

Następnie utwórz plik za pomocą edytora tekstu /etc/opendkim/SigningTablei dodaj domenę do SigningTable

Pokazuję oba przykłady. Pamiętaj, że w przypadku drugiego klucza muszę teraz użyć pełnej nazwy domeny „mail.example.com”:

example.com 201205._domainkey.example.com
mail.example.com my_selector._domainkey.example.com

Pamiętaj, że w OpenDKIM 2.0.1 w nazwach domen rozróżniana jest wielkość liter. W tym przykładzie używamy nowszej wersji OpenDKIM i nie stanowi to problemu.

Skonfiguruj postfiks. Edytuj /etc/postfix/main.cf i dodaj linie na końcu

milter_default_action = accept
milter_protocol = 2
smtpd_milters=inet:localhost:8891
non_smtpd_milters=inet:localhost:8891

Zmień także nazwę hosta:

#myhostname = localhost         #original
myhostname = mail.example.com

Powinieneś także zmienić odpowiedni wpis w / etc / hosts. Te zmiany obowiązują po ponownym uruchomieniu komputera (chociaż można to ustawić natychmiast za pomocą polecenia:) hostname NEW_NAME.

Zrestartuj postfiks i opendkim, jeśli nie uruchomiłeś się ponownie:

# service opendkim restart
Restarting OpenDKIM: opendkim.
# service postfix restart
 * Stopping Postfix Mail Transport Agent postfix   [ OK ]
 * Starting Postfix Mail Transport Agent postfix   [ OK ] 

Testowanie

Najlepszym sposobem sprawdzenia, czy podpisana poczta jest uwierzytelniana i czy rekordy DNS są prawidłowo skonfigurowane, jest skorzystanie z jednej z bezpłatnych usług testowych. Użyłem tych:

  • Brandon Checketts Email Validator - http://www.brandonchecketts.com/emailtest.php (mój ulubiony)
  • Wyślij podpisany e-mail na adres: check-auth@verifier.port25.com (mój ulubiony również)
  • Wyślij podpisany e-mail na adres: sa-test@sendmail.net (możesz przetestować wszystkie testowe adresy e-mail w polu Do: pojedynczej wiadomości wychodzącej)

  • Wyślij podpisany e-mail na adres: autorespond+dkim@dk.elandsys.com <--- BROKEN !!! Nie używaj tego.

Każdy z nich powie ci, czy wszystko działa poprawnie, i poda wskazówki dotyczące rozwiązywania problemów w razie potrzeby.

Jeśli masz konto Gmail, możesz również wysłać tam podpisaną wiadomość w celu szybkiego i łatwego przetestowania.

Gdy będziesz zadowolony, że wszystko jest w porządku, możesz usunąć flagę testową w rekordzie DNS TXT i zwiększyć TTL.

Gotowy!


Działa idealnie na precyzyjne. Dobry przewodnik dzięki.
Aki,

Użyj -b 1024, aby wygenerować klucze 1024 bitów. Jest to niezbędne do podpisania mojego Gmaila!
Prashant Singh

1
Uwaga: w opendkim.conf trzy parametry „Domena”, „Plik klucza” i „Selektor” są ignorowane podczas korzystania z „Tablicy podpisów” i „Tablicy kluczy”. Nie jestem pewien, czy to się kiedyś zmieniło, ale warto o tym wspomnieć ( opendkim.org/opendkim.conf.5.html )
billynoah

0

To dobry przewodnik.

Wyjaśnia, że ​​opendkim jest rzeczywiście zalecany i że kroki w celu zaimplementowania podpisywania dkim są takie same jak w przypadku dkim-filter.

dkim-milter nie jest już rozwijany. Jego oryginalny autor rozwidlił źródło i obecnie rozwija opendkim. W Lucid i późniejszych wersjach opendkim jest lepszy niż dkim-filter. Instrukcje na tej stronie powinny być takie same (wystarczy dostosować odpowiednio nazwy pakietów w razie potrzeby).

BTW Domainkeys to przestarzały poprzednik DKIM. Dodaj rekordy TXT do strefy DNS dla SPF i DKIM, ale nie trzeba już zawracać sobie głowy kluczami Domain.


Ten artykuł, który podłączyłeś, jest nieaktualny. opendkim to pakiet do użycia teraz. Pracuję nad konfiguracją ...
MountainX dla Moniki Cellio

Cenię aktualizację z twoich doświadczeń, gdy zamierzam zmienić serwer z Exim4 na Postfix-Dovecot i będę szukał aktualnych wskazówek.
iainH

Opublikowałem swoje rozwiązanie, ale nie miałem czasu go sformatować. Ty (lub ktokolwiek inny) możesz go sformatować. Ale moje notatki są bardzo obszerne, więc chciałem, żebyś miał do nich dostęp bezzwłocznie. Mam nadzieję, że są pomocni.
MountainX dla Moniki Cellio

-1

http://wiki.zimbra.com/wiki/Configuring_for_DKIM_Signing

Zawsze staram się przejrzeć kilka poradników na dowolny temat. Ten tut przy konfiguracji działa, właśnie go zweryfikowałem i to potwierdza. Ale możesz chcieć wyświetlić przykładową TXT dla rekordu domeny, który ma być szczegółowy. Ludzie mogą się zdezorientować i jawnie umieścić wszystko z samego klucza w wartości p, co nie jestem całkowicie pewien, czy jest poprawne. tj. ... w tym ----- POCZĄTEK KLUCZA PUBLICZNEGO ----- i ----- KONIEC KLUCZA PUBLICZNEGO -----. To może prowadzić do dezorientacji. Pamiętaj tylko, aby umieścić tylko część szyfrującą, a nie znaczniki.


3
Witamy w Ask Ubuntu! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Braiam
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.