
W części 1 mieliśmy szybką wycieczkę po S/MIME, przyglądając się podpisywaniu i szyfrowaniu naszych strumieni wiadomości w różnych klientach pocztowych. Wiadomości S/MIME mogą być podpisywane (co daje dowód tożsamości nadawcy), szyfrowane (utrzymując treść wiadomości w tajemnicy) lub oba.

W tej części, my:
Zainstaluj proste narzędzia wiersza poleceń do podpisywania i szyfrowania e-maili
Uzyskaj klucz/nsertifikujący do podpisywania dla nadawcy
Wyślij podpisaną wiadomość przez SparkPost i spójrz na otrzymaną wiadomość
Opcjonalnie, uzyskaj certyfikat odbiorcy do szyfrowania
Wyślij podpisaną i zaszyfrowaną wiadomość przez SparkPost i spójrz na otrzymaną wiadomość
Wypróbuj przydatne niezależne narzędzie “mimeshow” do przeglądania wewnętrznych plików e-mail.
OK – zaczynajmy!
1. Zainstaluj narzędzia
Narzędzia demonstracyjne są dostępne na GitHub, wraz z instrukcjami instalacji. Możesz zauważyć logo „build passing” – Travis i pytest automatycznie sprawdzają status kompilacji. Zwróć uwagę, że te narzędzia nie są oficjalnie wspierane przez SparkPost, ale starałem się, aby były solidne i łatwe w użyciu.
Jeśli masz znajomość Python i pip, instalacja powinna być całkiem znajoma. Pipfile automatycznie zajmuje się zewnętrznymi zależnościami za Ciebie. Gdy to się zakończy, możesz sprawdzić, czy wszystko jest zainstalowane, uruchamiając
Powinieneś zobaczyć przyjazny tekst pomocy. Następnie musimy…
2. Uzyskaj swój klucz nadawcy / certyfikat do podpisywania
3. Wyślij podpisaną wiadomość za pośrednictwem SparkPost
Teraz użyjmy prawdziwej domeny wysyłającej, skonfigurowanej zgodnie z New User Guide SparkPost. Mamy pliki certyfikatu nadawcy i klucza w bieżącym katalogu:
Plik tests/declaration.eml jest zawarty w projekcie. To po prostu plik tekstowy, więc możesz dostosować adres From: do swojej własnej domeny wysyłającej i adres To: do swojego odbiorcy testowego. Początek pliku wygląda następująco:
To: Bob <bob.lumreeker@gmail.com> From: Steve <steve@thetucks.com> Subject: Here is our declaration MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Kiedy w kursie wydarzeń ludzkich staje się to konieczne …
Ustaw swój klucz API:
Wyślij email:
Zobaczysz:
Nawiązano połączenie z https://api.sparkpost.com/api/v1 Sending tests/declaration.eml From: Steve <steve@thetucks.com> Do: Bob <bob.lumreeker@gmail.com> OK - w 1,15 sekund
Po chwili email dotrze do skrzynki odbiorczej Boba. Thunderbird wyświetla go z czerwoną kropką na kopercie, co wskazuje na ważny podpis nadawcy.

Sukces! Zakończ tę kawę, zasłużyłeś na to. Jeśli masz problemy, sprawdź, czy adres From: w pliku emaila pasuje do nazwy twoich plików .crt i .pem.
4. Szyfrowanie wiadomości
Aby zaszyfrować wiadomość, potrzebujesz publicznego klucza odbiorcy w formie certyfikatu. Jest to plik tekstowy, który wygląda tak:
Bag Attributes friendlyName: s COMODO CA Limited ID #2 localKeyID: 32 84 AB 9C 56 5C 80 C6 89 4D 40 46 DD D4 7C 71 E8 CD ED C1 subject=/emailAddress=bob.lumreeker@gmail.com issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Client Authentication and Secure Email CA -----BEGIN CERTIFICATE----- wygląda jak losowe znaki tutaj -----END CERTIFICATE-----
W katalogu testów znajduje się przykładowy certyfikat odbiorcy dla bob@example.com, dzięki czemu możesz ćwiczyć z nim przed uzyskaniem rzeczywistego certyfikatu:
Zobaczysz:
Zauważysz, że długość wyjścia jest znacznie dłuższa niż w przypadku zaszyfrowanej wiadomości, ponieważ zawiera dużo dodatkowych informacji oraz samą zaszyfrowaną wiadomość.
4.1 Wysyłanie zaszyfrowanej, podpisanej wiadomości przez SparkPost
Wyślijmy zaszyfrowaną wiadomość na prawdziwy adres e-mail. Możesz postępować według tego samego procesu co wcześniej (samopodpisany lub od dostawcy takiego jak Comodo), aby uzyskać klucz publiczny / certyfikat dla swoich adresów odbiorców. Potrzebujesz tylko pliku .crt - odbiorca nigdy nie musi podawać swojego klucza prywatnego (.p12 i .pem).
Mam plik bob.lumreeker@gmail.com.crt dla mojego zamierzonego odbiorcy – pasujący do adresu From: w moim pliku.
Oto polecenie do wysłania:
Widzę:
Otworzono połączenie do https://api.sparkpost.com/api/v1 Sending tests/declaration.eml From: Steve <steve@thetucks.com> To: Bob <bob.lumreeker@gmail.com> OK - w czasie 1.168 sekundy
Mail pojawia się w Thunderbird z ikoną podpisu „czerwona kropka” i ikoną szyfrowania „kłódka”.

Możesz wysyłać złożone e-maile oparte na HTML-u z linkami i obrazami równie łatwo, jak pokazano w Części 1. Niektóre klienty, takie jak Thunderbird, proszą o pozwolenie na wyświetlanie zewnętrznych linków i obrazów w zaszyfrowanych wiadomościach S/MIME, ale wiadomości tylko podpisane wyświetlają się dobrze w klientach, w tym Thunderbird i Gmail:


Uwaga: rozwijane menu pokazuje „Zweryfikowany adres e-mail”.
Dalsze przemyślenia i rzeczy, na które należy zwrócić uwagę
To narzędzie przyjmuje bardzo proste podejście do pobierania niezbędnych kluczy — po prostu szuka nazwanych plików w bieżącym katalogu. Bardziej złożone rozwiązania, takie jak przechowywanie wszystkich kluczy w bazie danych, można łatwo dodać, ale chciałem, aby kod był możliwie jak najprostszy.
Możesz dodać innych odbiorców za pomocą Cc: i Bcc: i zostaną one dostarczone; może to być przydatne do celów archiwalnych. Odbierane są podpisane wiadomości i mogą być wyświetlane przez innych odbiorców wraz z podpisem. Narzędzie usuwa nagłówek Bcc: z dostarczonej wiadomości (tak jak zrobiłby to klient poczty na komputerze).
Aby zapewnić, że wiadomości przechodzą przez SparkPost bez zmian (co mogłoby złamać podpisywanie), narzędzie ustawia opcje API dla wysyłki „transakcyjnej”, z wyłączonym śledzeniem otwarć i kliknięć.
Jeśli używasz szyfrowania, pamiętaj, że narzędzie odbiera pojedynczy adres To: dla tego. Inni odbiorcy mogą dekodować treść wiadomości tylko wtedy, gdy mają klucz prywatny odbiorcy To:. Jeśli używasz drugorzędnych odbiorców tylko jako zapis dostaw, na przykład, to i tak może być w porządku.
Podpisane, zapieczętowane, dostarczone... jestem twój
Oto nasz szybki przegląd, jak podpisywać, zabezpieczać i dostarczać wiadomości S/MIME za pośrednictwem SparkPost. Szybkie przypomnienie: projekt demo jest dostępny na GitHub, i starałem się, aby był łatwy do zainstalowania i użycia.
Funkcja bonusowa: wyświetlanie części MIME za pomocą „mimeshow”
Pliki RFC822 MIME multipart są dość skomplikowane do odczytania przez ludzi. Projekt zawiera samodzielne narzędzie, aby to ułatwić, nazywane mimeshow.
Przyjmuje ono dowolne pliki e-mail, które masz (nie tylko te z S/MIME) i pokazuje strukturę wewnętrzną. Oto przykład:
Zobaczysz:
Możesz także użyć jako filtr, aby uzyskać czytelne dla ludzi podsumowanie wyjścia sparkpostSMIME :
Zobaczysz:
W końcu…
Podsumowując – zainstalowaliśmy kilka prostych narzędzi wiersza poleceń do podpisywania i szyfrowania poczty elektronicznej (repozytorium GitHub zawiera kompletne instrukcje instalacji).
Otrzymaliśmy klucz / certyfikat nadawcy do podpisywania i wysłaliśmy podpisaną wiadomość przez SparkPost. Otrzymaliśmy certyfikat odbiorcy do szyfrowania, a następnie wysłaliśmy podpisaną i zaszyfrowaną wiadomość przez SparkPost.
Na koniec wypróbowaliśmy przydatne, samodzielne narzędzie „mimeshow” do przeglądania wewnętrznych plików poczty.
To wszystko na teraz! W naszej kolejnej części pokażemy Ci, jak rozwinąć te możliwości S/MIME na lokalne platformy bezpiecznej poczty elektronicznej, takie jak PowerMTA i Momentum. Do zobaczenia wkrótce!