Wdrażanie sygnałów dla lokalnych serwerów: integracja PowerMTA
Ptak
30 sie 2019
1 min read

Najważniejsze informacje
Cel: Ten przewodnik wyjaśnia, jak zintegrować PowerMTA 5.0+ z SparkPost Signals, aby przesyłać dane o zdarzeniach i zaangażowaniu (odrzuty, otwarcia, kliknięcia, skargi na spam) z lokalnych MTAs bezpośrednio do warstwy analitycznej SparkPost.
Podstawowa konfiguracja:
Dodaj enable-signals true i zdefiniuj swój punkt końcowy wprowadzania SparkPost (https://api.sparkpost.com/api/v1/ingest/events lub odpowiednik w UE).
Użyj ważnego klucza API z uprawnieniami “Przychodzące zdarzenia: Zapisz”.
Określ customer-id, a opcjonalnie skonfiguruj niestandardowe domeny śledzenia dla lepszej dostarczalności.
Ustawienia śledzenia: Śledzenie zaangażowania w PowerMTA automatycznie wstrzykuje piksele otwarcia i kliknięcia do e-maili HTML. Możesz wyłączyć śledzenie dla każdego linku za pomocą atrybutu data-msys-clicktrack="0".
Selektywne raportowanie: Sygnalizacje mogą być włączane globalnie lub ograniczone do określonych Wirtualnych MTA, pul lub domen nadawców, co pozwala na precyzyjną kontrolę danych.
Testowanie i weryfikacja: Użyj pulpitu integracji sygnalizacji i dzienników PowerMTA, aby potwierdzić wprowadzanie zdarzeń oraz śledzić wskaźniki zdrowia, odrzuty i metryki zaangażowania w czasie rzeczywistym.
Regulacja dostarczalności:
Użyj znaczących nazw Wirtualnego MTA i Zadań — te bezpośrednio mapują się na Pule IP oraz Identyfikatory Kampanii w raportach SparkPost.
Skonfiguruj podpisywanie DKIM, egzekwowanie TLS i odpowiednie zasady przekazywania, aby zapobiec nieautoryzowanym wstrzyknięciom.
Zaawansowane ustawienia: Artykuł zawiera również gotowe do użycia fragmenty kodu dotyczące FBL i obsługi odrzuceń poza pasmem, uwierzytelnionego wstrzykiwania SMTP (port 587) oraz kodu Python do sanitizacji nagłówków X-Job w celu zapewnienia zgodności.
Podsumowanie pytań i odpowiedzi
Czym tak naprawdę zajmuje się integracja Signals?
Automatycznie przesyła zdarzenia wiadomości PowerMTA (wstrzykiwanie, dostawa, niepowodzenie, zaangażowanie) do Twojego konta SparkPost, dzięki czemu masz dostęp do pulpitów nawigacyjnych, takich jak ocena stanu zdrowia, raporty opóźnień i monitorowanie pułapek spamowych.
Dlaczego zintegrować Signals z lokalnym MTA?
Wiele przedsiębiorstw uruchamia samodzielnie hostowaną infrastrukturę poczty elektronicznej z powodów zgodności, ale nadal chce korzystać z analityki i możliwości monitorowania SparkPost. Signals wypełnia tę lukę, nie migrując dostarczania poczty do chmury.
Jak mogę zweryfikować, że zdarzenia przepływają do SparkPost?
Sprawdź logi PowerMTA dla
Signals: Transferred ... successfullyi potwierdź wpisy zdarzeń w Signals → Events Search w SparkPost.Czy mogę użyć własnej domeny do śledzenia?
Tak — skonfiguruj CNAME, taki jak
track.mycompany.com → pmta.spgo.io(US) lubpmta.eu.spgo.io(EU), a następnie zarejestruj i zweryfikuj go w SparkPost w celu zachowania spójności marki i reputacji.A co z prywatnością danych lub wykorzystaniem dysku?
Dyrektywa
min-free-spaceautomatycznie usuwa stare pliki zdarzeń JSON, gdy dostępne miejsce na dysku jest niskie, zapobiegając lokalnemu gromadzeniu się danych telemetrycznych.Jaka jest "funkcja bonusowa" na końcu?
Narzędzie regex Pythona (
pmtaSafeJobID), które zapewnia, że nazwy kampanii/zleceń używają tylko znaków ważnych w formacie nagłówka PowerMTAX-Job, zastępując niebezpieczne znaki znakami podkreślenia.
Zanurzmy się w szczegóły konfigurowania PowerMTA dla SparkPost Signals. Będziesz potrzebować:
Serwera do uruchomienia najnowszej wersji PowerMTA – nowego lub istniejącego komputera
Konta SparkPost z uprawnieniem klucza API do „Nadwyżki zdarzeń: Zapisz” jak opisano tutaj
Skonfigurujemy PowerMTA do przesyłania zdarzeń do Twojego konta SparkPost, a następnie będziesz mógł korzystać z następujących:
Zanurzmy się w szczegóły konfigurowania PowerMTA dla SparkPost Signals. Będziesz potrzebować:
Serwera do uruchomienia najnowszej wersji PowerMTA – nowego lub istniejącego komputera
Konta SparkPost z uprawnieniem klucza API do „Nadwyżki zdarzeń: Zapisz” jak opisano tutaj
Skonfigurujemy PowerMTA do przesyłania zdarzeń do Twojego konta SparkPost, a następnie będziesz mógł korzystać z następujących:
Zanurzmy się w szczegóły konfigurowania PowerMTA dla SparkPost Signals. Będziesz potrzebować:
Serwera do uruchomienia najnowszej wersji PowerMTA – nowego lub istniejącego komputera
Konta SparkPost z uprawnieniem klucza API do „Nadwyżki zdarzeń: Zapisz” jak opisano tutaj
Skonfigurujemy PowerMTA do przesyłania zdarzeń do Twojego konta SparkPost, a następnie będziesz mógł korzystać z następujących:
Przegląd instalacji i konfiguracji
Po pierwsze zainstaluj (lub zaktualizuj) do PowerMTA 5.0 r4 lub nowszej, postępując zgodnie z typowymi instrukcjami instalacji v5.0 które są dość proste. Następnie przejdziemy przez następujące kroki:
Skonfiguruj łącznik PowerMTA do SparkPost Signals
Skonfiguruj śledzenie zaangażowania z niestandardową domeną śledzenia
Wybierz, które strumienie ruchu PowerMTA mają być raportowane do Signals
Testowanie, czy twoje zdarzenia docierają do Signals
Przejrzyj, jak używać znaczących nazw, które dobrze się prezentują w raportowaniu.
Omówimy również inne szczegółowe aspekty konfiguracji PowerMTA używane w naszej prezentacji Signals:
Wydarzenia FBL (skargi spamowe) i zdalne (out-of-band) odbicia
Konfiguracja wstrzyknięcia, w tym DKIM
Konfiguracja FBL i OOB
Konfiguracja i nazewnictwo VirtualMTA (i jak to się pojawia w twoich raportach SparkPost Signals)
Na koniec jest „bonusowa funkcja” z kodem, aby upewnić się, że nazwy twoich kampanii są zgodne z konwencjami nazw X-Job PowerMTA.
Po pierwsze zainstaluj (lub zaktualizuj) do PowerMTA 5.0 r4 lub nowszej, postępując zgodnie z typowymi instrukcjami instalacji v5.0 które są dość proste. Następnie przejdziemy przez następujące kroki:
Skonfiguruj łącznik PowerMTA do SparkPost Signals
Skonfiguruj śledzenie zaangażowania z niestandardową domeną śledzenia
Wybierz, które strumienie ruchu PowerMTA mają być raportowane do Signals
Testowanie, czy twoje zdarzenia docierają do Signals
Przejrzyj, jak używać znaczących nazw, które dobrze się prezentują w raportowaniu.
Omówimy również inne szczegółowe aspekty konfiguracji PowerMTA używane w naszej prezentacji Signals:
Wydarzenia FBL (skargi spamowe) i zdalne (out-of-band) odbicia
Konfiguracja wstrzyknięcia, w tym DKIM
Konfiguracja FBL i OOB
Konfiguracja i nazewnictwo VirtualMTA (i jak to się pojawia w twoich raportach SparkPost Signals)
Na koniec jest „bonusowa funkcja” z kodem, aby upewnić się, że nazwy twoich kampanii są zgodne z konwencjami nazw X-Job PowerMTA.
Po pierwsze zainstaluj (lub zaktualizuj) do PowerMTA 5.0 r4 lub nowszej, postępując zgodnie z typowymi instrukcjami instalacji v5.0 które są dość proste. Następnie przejdziemy przez następujące kroki:
Skonfiguruj łącznik PowerMTA do SparkPost Signals
Skonfiguruj śledzenie zaangażowania z niestandardową domeną śledzenia
Wybierz, które strumienie ruchu PowerMTA mają być raportowane do Signals
Testowanie, czy twoje zdarzenia docierają do Signals
Przejrzyj, jak używać znaczących nazw, które dobrze się prezentują w raportowaniu.
Omówimy również inne szczegółowe aspekty konfiguracji PowerMTA używane w naszej prezentacji Signals:
Wydarzenia FBL (skargi spamowe) i zdalne (out-of-band) odbicia
Konfiguracja wstrzyknięcia, w tym DKIM
Konfiguracja FBL i OOB
Konfiguracja i nazewnictwo VirtualMTA (i jak to się pojawia w twoich raportach SparkPost Signals)
Na koniec jest „bonusowa funkcja” z kodem, aby upewnić się, że nazwy twoich kampanii są zgodne z konwencjami nazw X-Job PowerMTA.
Konfiguracja FBL i OOB
Teraz .. w końcu .. deklarujemy, które konkretne domeny są otwarte na zdalne odbicia i odpowiedzi FBL. Nie chcemy ich przekazywać nigdzie (aby zapobiec atakom backscatter), tylko wewnętrznie przetwarzać te odpowiedzi.
# # Enable Bounce and FBL processing on specific domains # relay-domain pmta.signalsdemo.trymsys.net relay-domain bounces.pmta.signalsdemo.trymsys.net relay-domain fbl.pmta.signalsdemo.trymsys.net <bounce-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain pmta.signalsdemo.trymsys.net domain bounces.pmta.signalsdemo.trymsys.net </address-list> </bounce-processor> <feedback-loop-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain fbl.pmta.signalsdemo.trymsys.net </address-list> </feedback-loop-processor>
Możesz zobaczyć, że ustawiłem dwie domeny odbicia, kiedy bawiłem się z zastosowaniem/niezastosowaniem reguły przepisywania mfrom .
Domena FBL jest zazwyczaj rejestrowana z zewnętrznymi usługami takimi jak Microsoft SNDS; zobacz ten artykuł, aby uzyskać więcej informacji. W tej demonstracji FBL-y będą pochodziły z Bouncy Sink, więc nie ma potrzeby rejestrowania.
Teraz .. w końcu .. deklarujemy, które konkretne domeny są otwarte na zdalne odbicia i odpowiedzi FBL. Nie chcemy ich przekazywać nigdzie (aby zapobiec atakom backscatter), tylko wewnętrznie przetwarzać te odpowiedzi.
# # Enable Bounce and FBL processing on specific domains # relay-domain pmta.signalsdemo.trymsys.net relay-domain bounces.pmta.signalsdemo.trymsys.net relay-domain fbl.pmta.signalsdemo.trymsys.net <bounce-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain pmta.signalsdemo.trymsys.net domain bounces.pmta.signalsdemo.trymsys.net </address-list> </bounce-processor> <feedback-loop-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain fbl.pmta.signalsdemo.trymsys.net </address-list> </feedback-loop-processor>
Możesz zobaczyć, że ustawiłem dwie domeny odbicia, kiedy bawiłem się z zastosowaniem/niezastosowaniem reguły przepisywania mfrom .
Domena FBL jest zazwyczaj rejestrowana z zewnętrznymi usługami takimi jak Microsoft SNDS; zobacz ten artykuł, aby uzyskać więcej informacji. W tej demonstracji FBL-y będą pochodziły z Bouncy Sink, więc nie ma potrzeby rejestrowania.
Teraz .. w końcu .. deklarujemy, które konkretne domeny są otwarte na zdalne odbicia i odpowiedzi FBL. Nie chcemy ich przekazywać nigdzie (aby zapobiec atakom backscatter), tylko wewnętrznie przetwarzać te odpowiedzi.
# # Enable Bounce and FBL processing on specific domains # relay-domain pmta.signalsdemo.trymsys.net relay-domain bounces.pmta.signalsdemo.trymsys.net relay-domain fbl.pmta.signalsdemo.trymsys.net <bounce-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain pmta.signalsdemo.trymsys.net domain bounces.pmta.signalsdemo.trymsys.net </address-list> </bounce-processor> <feedback-loop-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain fbl.pmta.signalsdemo.trymsys.net </address-list> </feedback-loop-processor>
Możesz zobaczyć, że ustawiłem dwie domeny odbicia, kiedy bawiłem się z zastosowaniem/niezastosowaniem reguły przepisywania mfrom .
Domena FBL jest zazwyczaj rejestrowana z zewnętrznymi usługami takimi jak Microsoft SNDS; zobacz ten artykuł, aby uzyskać więcej informacji. W tej demonstracji FBL-y będą pochodziły z Bouncy Sink, więc nie ma potrzeby rejestrowania.
Skonfiguruj konektor PowerMTA
Konfiguracja Signals jest opisana w sekcji 10.1 podręcznika użytkownika 5.0. Tutaj zaczniemy od „Przypadku użycia #2”, który włącza Signals dla całego ruchu z tego hosta PowerMTA oraz włącza śledzenie zaangażowania SparkPost.
# # SparkPost Signals # <signals> api-key ##my ingest API key here## upload-url https://api.sparkpost.com/api/v1/ingest/events log-verbose true min-free-space 1G engagement-tracking sparkpost # this turns on the open and click tracking in PowerMTA customer-id 123 # Your SparkPost account number here </signals> enable-signals true
Oto co robi każdy atrybut:
api-key
Jest to unikalne dla Twojego konta SparkPost, to wartość, którą otrzymałeś wcześniej od SparkPost.
upload-url
To musi pasować do adresu Twojej usługi API SparkPost, niezależnie od tego, czy jest to US, czy EU. Więcej informacji znajdziesz tutaj. Zwykłe wartości to:
SparkPost (US): https://api.sparkpost.com/api/v1/ingest/events
SparkPost EU: https://api.eu.sparkpost.com/api/v1/ingest/events
log-verbose
Ten dyrektywa jest opcjonalna, a gdy jest włączona, daje nieco więcej informacji w pliku pmta.log, co może być przydatne podczas konfiguracji, aby potwierdzić, że wszystko działa poprawnie. Co minutę, nawet gdy nie ma ruchu, zobaczysz:
2019-07-26 11:47:57 Signals: Odkryto 0 plików
Przy ruchu zobaczysz coś takiego:
2019-07-26 11:50:57 Signals: Discovered sp1-0000000000003FBD.json 2019-07-26 11:50:57 Signals: Transferred sp1-0000000000003FBD.json successfully. 2019-07-26 11:50:57 Signals: Discovered 1 file, transferred 1 file successfully
min-free-space
To mówi PowerMTA, jaki próg wolnego miejsca na dysku powinien uruchomić, aby zacząć usuwać najstarsze pliki JSON zdarzeń SparkPost, aby zrobić miejsce dla nowych plików, gdy miejsce na dysku jest ograniczone.
enable-signals
To mówi PowerMTA, aby przesyłać do Signals, w tym przypadku globalnie dla całego ruchu (więcej informacji tutaj, dla v5.0). Możesz być bardziej selektywny, co do tego, które strumienie ruchu przesyłać, jeśli chcesz.
Możesz również oznaczyć określony ruch PowerMTA jako należący do subkonta SparkPost – to kolejny sposób na odróżnienie jednego strumienia ruchu od drugiego.
engagement-tracking, customer-id
Domyślne rozwiązanie PowerMTA dotyczące śledzenia zaangażowania odnosi się do domeny śledzenia dla usługi SparkPost hostowanej w USA. Wskazujesz swój numer ID klienta SparkPost; oto instrukcje, jak go znaleźć.
tracking-domain
Dla kont SparkPost EU, dodaj następujący wiersz:
tracking-domain pmta.eu.spgo.io # to jest punkt końcowy dla SparkPost EU
Domena śledzenia niestandardowa
Jeśli wolisz użyć własnej domeny śledzenia (to lepsze z punktu widzenia dostarczalności), zrób następująco:
Stwórz domenę śledzenia u swojego dostawcy DNS, tworząc rekord CNAME. Będzie to zwykle subdomeną twojej domeny najwyższego poziomu, np. track.mycompany.com .
track.mycompany.com CNAME pmta.spgo.io # if you have a SparkPost US account track.mycompany.com CNAME pmta.eu.spgo.io # if you have a SparkPost EU account
Możesz również używać domen śledzenia HTTPS, choć jest to bardziej skomplikowane (zobacz kroki konfiguracji SparkPost dla domen śledzenia HTTPS).
Zarejestruj domenę śledzenia w swoim koncie SparkPost i zweryfikuj ją. Poczekaj kilka minut przed próbą, aby pozwolić na propagację zmian DNS w Internecie, w zależności od dostawcy DNS.
Skonfiguruj PowerMTA, aby używał tej domeny zamiast domyślnej, z
tracking-domain yourdomain.com # Wstaw tutaj swoją własną domenę
Możesz sprawdzić, czy przesyłane wiadomości e-mail mają dodane „piksle otwarte” i linki, które są zawinięte, patrząc na wewnętrzne dane wiadomości (w Gmailu, użyj menu w prawym górnym rogu i wybierz „Pokaż oryginał”).

Zauważysz piksele otwarte na początku i końcu HTML w wiadomości e-mail. Każdy link HTML jest również zmieniony, aby mieć REF wskazujący na domenę śledzenia.

To wszystko, co musisz zrobić, aby uruchomić SparkPost Signals z wbudowanym śledzeniem zaangażowania PowerMTA.
Zapobieganie śledzeniu konkretnych linków w twojej wiadomości HTML
Możesz zapobiec PowerMTA w śledzeniu konkretnych linków, ustawiając atrybut niestandardowy data-msys-clicktrack na „0” :
<a href="#" data-msys-clicktrack="0">Przykład</a>
PowerMTA nie otoczy linku. Usunie także ten atrybut przed przesłaniem wiadomości do odbiorcy.
Konfiguracja Signals jest opisana w sekcji 10.1 podręcznika użytkownika 5.0. Tutaj zaczniemy od „Przypadku użycia #2”, który włącza Signals dla całego ruchu z tego hosta PowerMTA oraz włącza śledzenie zaangażowania SparkPost.
# # SparkPost Signals # <signals> api-key ##my ingest API key here## upload-url https://api.sparkpost.com/api/v1/ingest/events log-verbose true min-free-space 1G engagement-tracking sparkpost # this turns on the open and click tracking in PowerMTA customer-id 123 # Your SparkPost account number here </signals> enable-signals true
Oto co robi każdy atrybut:
api-key
Jest to unikalne dla Twojego konta SparkPost, to wartość, którą otrzymałeś wcześniej od SparkPost.
upload-url
To musi pasować do adresu Twojej usługi API SparkPost, niezależnie od tego, czy jest to US, czy EU. Więcej informacji znajdziesz tutaj. Zwykłe wartości to:
SparkPost (US): https://api.sparkpost.com/api/v1/ingest/events
SparkPost EU: https://api.eu.sparkpost.com/api/v1/ingest/events
log-verbose
Ten dyrektywa jest opcjonalna, a gdy jest włączona, daje nieco więcej informacji w pliku pmta.log, co może być przydatne podczas konfiguracji, aby potwierdzić, że wszystko działa poprawnie. Co minutę, nawet gdy nie ma ruchu, zobaczysz:
2019-07-26 11:47:57 Signals: Odkryto 0 plików
Przy ruchu zobaczysz coś takiego:
2019-07-26 11:50:57 Signals: Discovered sp1-0000000000003FBD.json 2019-07-26 11:50:57 Signals: Transferred sp1-0000000000003FBD.json successfully. 2019-07-26 11:50:57 Signals: Discovered 1 file, transferred 1 file successfully
min-free-space
To mówi PowerMTA, jaki próg wolnego miejsca na dysku powinien uruchomić, aby zacząć usuwać najstarsze pliki JSON zdarzeń SparkPost, aby zrobić miejsce dla nowych plików, gdy miejsce na dysku jest ograniczone.
enable-signals
To mówi PowerMTA, aby przesyłać do Signals, w tym przypadku globalnie dla całego ruchu (więcej informacji tutaj, dla v5.0). Możesz być bardziej selektywny, co do tego, które strumienie ruchu przesyłać, jeśli chcesz.
Możesz również oznaczyć określony ruch PowerMTA jako należący do subkonta SparkPost – to kolejny sposób na odróżnienie jednego strumienia ruchu od drugiego.
engagement-tracking, customer-id
Domyślne rozwiązanie PowerMTA dotyczące śledzenia zaangażowania odnosi się do domeny śledzenia dla usługi SparkPost hostowanej w USA. Wskazujesz swój numer ID klienta SparkPost; oto instrukcje, jak go znaleźć.
tracking-domain
Dla kont SparkPost EU, dodaj następujący wiersz:
tracking-domain pmta.eu.spgo.io # to jest punkt końcowy dla SparkPost EU
Domena śledzenia niestandardowa
Jeśli wolisz użyć własnej domeny śledzenia (to lepsze z punktu widzenia dostarczalności), zrób następująco:
Stwórz domenę śledzenia u swojego dostawcy DNS, tworząc rekord CNAME. Będzie to zwykle subdomeną twojej domeny najwyższego poziomu, np. track.mycompany.com .
track.mycompany.com CNAME pmta.spgo.io # if you have a SparkPost US account track.mycompany.com CNAME pmta.eu.spgo.io # if you have a SparkPost EU account
Możesz również używać domen śledzenia HTTPS, choć jest to bardziej skomplikowane (zobacz kroki konfiguracji SparkPost dla domen śledzenia HTTPS).
Zarejestruj domenę śledzenia w swoim koncie SparkPost i zweryfikuj ją. Poczekaj kilka minut przed próbą, aby pozwolić na propagację zmian DNS w Internecie, w zależności od dostawcy DNS.
Skonfiguruj PowerMTA, aby używał tej domeny zamiast domyślnej, z
tracking-domain yourdomain.com # Wstaw tutaj swoją własną domenę
Możesz sprawdzić, czy przesyłane wiadomości e-mail mają dodane „piksle otwarte” i linki, które są zawinięte, patrząc na wewnętrzne dane wiadomości (w Gmailu, użyj menu w prawym górnym rogu i wybierz „Pokaż oryginał”).

Zauważysz piksele otwarte na początku i końcu HTML w wiadomości e-mail. Każdy link HTML jest również zmieniony, aby mieć REF wskazujący na domenę śledzenia.

To wszystko, co musisz zrobić, aby uruchomić SparkPost Signals z wbudowanym śledzeniem zaangażowania PowerMTA.
Zapobieganie śledzeniu konkretnych linków w twojej wiadomości HTML
Możesz zapobiec PowerMTA w śledzeniu konkretnych linków, ustawiając atrybut niestandardowy data-msys-clicktrack na „0” :
<a href="#" data-msys-clicktrack="0">Przykład</a>
PowerMTA nie otoczy linku. Usunie także ten atrybut przed przesłaniem wiadomości do odbiorcy.
Konfiguracja Signals jest opisana w sekcji 10.1 podręcznika użytkownika 5.0. Tutaj zaczniemy od „Przypadku użycia #2”, który włącza Signals dla całego ruchu z tego hosta PowerMTA oraz włącza śledzenie zaangażowania SparkPost.
# # SparkPost Signals # <signals> api-key ##my ingest API key here## upload-url https://api.sparkpost.com/api/v1/ingest/events log-verbose true min-free-space 1G engagement-tracking sparkpost # this turns on the open and click tracking in PowerMTA customer-id 123 # Your SparkPost account number here </signals> enable-signals true
Oto co robi każdy atrybut:
api-key
Jest to unikalne dla Twojego konta SparkPost, to wartość, którą otrzymałeś wcześniej od SparkPost.
upload-url
To musi pasować do adresu Twojej usługi API SparkPost, niezależnie od tego, czy jest to US, czy EU. Więcej informacji znajdziesz tutaj. Zwykłe wartości to:
SparkPost (US): https://api.sparkpost.com/api/v1/ingest/events
SparkPost EU: https://api.eu.sparkpost.com/api/v1/ingest/events
log-verbose
Ten dyrektywa jest opcjonalna, a gdy jest włączona, daje nieco więcej informacji w pliku pmta.log, co może być przydatne podczas konfiguracji, aby potwierdzić, że wszystko działa poprawnie. Co minutę, nawet gdy nie ma ruchu, zobaczysz:
2019-07-26 11:47:57 Signals: Odkryto 0 plików
Przy ruchu zobaczysz coś takiego:
2019-07-26 11:50:57 Signals: Discovered sp1-0000000000003FBD.json 2019-07-26 11:50:57 Signals: Transferred sp1-0000000000003FBD.json successfully. 2019-07-26 11:50:57 Signals: Discovered 1 file, transferred 1 file successfully
min-free-space
To mówi PowerMTA, jaki próg wolnego miejsca na dysku powinien uruchomić, aby zacząć usuwać najstarsze pliki JSON zdarzeń SparkPost, aby zrobić miejsce dla nowych plików, gdy miejsce na dysku jest ograniczone.
enable-signals
To mówi PowerMTA, aby przesyłać do Signals, w tym przypadku globalnie dla całego ruchu (więcej informacji tutaj, dla v5.0). Możesz być bardziej selektywny, co do tego, które strumienie ruchu przesyłać, jeśli chcesz.
Możesz również oznaczyć określony ruch PowerMTA jako należący do subkonta SparkPost – to kolejny sposób na odróżnienie jednego strumienia ruchu od drugiego.
engagement-tracking, customer-id
Domyślne rozwiązanie PowerMTA dotyczące śledzenia zaangażowania odnosi się do domeny śledzenia dla usługi SparkPost hostowanej w USA. Wskazujesz swój numer ID klienta SparkPost; oto instrukcje, jak go znaleźć.
tracking-domain
Dla kont SparkPost EU, dodaj następujący wiersz:
tracking-domain pmta.eu.spgo.io # to jest punkt końcowy dla SparkPost EU
Domena śledzenia niestandardowa
Jeśli wolisz użyć własnej domeny śledzenia (to lepsze z punktu widzenia dostarczalności), zrób następująco:
Stwórz domenę śledzenia u swojego dostawcy DNS, tworząc rekord CNAME. Będzie to zwykle subdomeną twojej domeny najwyższego poziomu, np. track.mycompany.com .
track.mycompany.com CNAME pmta.spgo.io # if you have a SparkPost US account track.mycompany.com CNAME pmta.eu.spgo.io # if you have a SparkPost EU account
Możesz również używać domen śledzenia HTTPS, choć jest to bardziej skomplikowane (zobacz kroki konfiguracji SparkPost dla domen śledzenia HTTPS).
Zarejestruj domenę śledzenia w swoim koncie SparkPost i zweryfikuj ją. Poczekaj kilka minut przed próbą, aby pozwolić na propagację zmian DNS w Internecie, w zależności od dostawcy DNS.
Skonfiguruj PowerMTA, aby używał tej domeny zamiast domyślnej, z
tracking-domain yourdomain.com # Wstaw tutaj swoją własną domenę
Możesz sprawdzić, czy przesyłane wiadomości e-mail mają dodane „piksle otwarte” i linki, które są zawinięte, patrząc na wewnętrzne dane wiadomości (w Gmailu, użyj menu w prawym górnym rogu i wybierz „Pokaż oryginał”).

Zauważysz piksele otwarte na początku i końcu HTML w wiadomości e-mail. Każdy link HTML jest również zmieniony, aby mieć REF wskazujący na domenę śledzenia.

To wszystko, co musisz zrobić, aby uruchomić SparkPost Signals z wbudowanym śledzeniem zaangażowania PowerMTA.
Zapobieganie śledzeniu konkretnych linków w twojej wiadomości HTML
Możesz zapobiec PowerMTA w śledzeniu konkretnych linków, ustawiając atrybut niestandardowy data-msys-clicktrack na „0” :
<a href="#" data-msys-clicktrack="0">Przykład</a>
PowerMTA nie otoczy linku. Usunie także ten atrybut przed przesłaniem wiadomości do odbiorcy.
Wybierz, które strumienie ruchu PowerMTA zgłosić do Signals
Możesz wybrać, które sygnały mają być aktywne:
Globalnie (to jest to, co użyliśmy w powyższym przykładzie)
Dla niektórych Wirtualnych MTA, a nie dla innych
Dla niektórych zbiorów Wirtualnych MTA, a nie dla innych
Dla konkretnych adresów „Nadawcy” lub „Od”, które są przekazywane przez PowerMTA, w połączeniu z selekcjami Wirtualnego MTA / zbiorów Wirtualnych MTA
Zakres | Co jest raportowane do Sygnałów | Kiedy go używać |
|---|---|---|
Globalny | Cały ruch z hosta PowerMTA | Proste wdrożenia, w których cały ruch powinien być przesyłany do Sygnałów SparkPost. |
Wirtualny MTA | Ruch tylko z wybranych Wirtualnych MTA | Gdy chcesz oddzielne widoki raportowania dla różnych adresów IP lub typów ruchu. |
Zbiór Wirtualnych MTA | Ruch z wybranych zbiorów Wirtualnych MTA | Gdy grupujesz adresy IP w zbiory i chcesz raportowanie na poziomie zbioru. |
Nadawca / domena „Od” | Wiadomości od konkretnego nadawcy lub domen „Od” | Gdy potrzebujesz raportowania na poziomie klienta lub marki w ramach tej samej infrastruktury. |
Ta konfiguracja jest bardzo potężna i jest ilustrowana poprzez serię przykładowych przypadków użycia (v5.0) w podręczniku użytkownika.
Możesz wybrać, które sygnały mają być aktywne:
Globalnie (to jest to, co użyliśmy w powyższym przykładzie)
Dla niektórych Wirtualnych MTA, a nie dla innych
Dla niektórych zbiorów Wirtualnych MTA, a nie dla innych
Dla konkretnych adresów „Nadawcy” lub „Od”, które są przekazywane przez PowerMTA, w połączeniu z selekcjami Wirtualnego MTA / zbiorów Wirtualnych MTA
Zakres | Co jest raportowane do Sygnałów | Kiedy go używać |
|---|---|---|
Globalny | Cały ruch z hosta PowerMTA | Proste wdrożenia, w których cały ruch powinien być przesyłany do Sygnałów SparkPost. |
Wirtualny MTA | Ruch tylko z wybranych Wirtualnych MTA | Gdy chcesz oddzielne widoki raportowania dla różnych adresów IP lub typów ruchu. |
Zbiór Wirtualnych MTA | Ruch z wybranych zbiorów Wirtualnych MTA | Gdy grupujesz adresy IP w zbiory i chcesz raportowanie na poziomie zbioru. |
Nadawca / domena „Od” | Wiadomości od konkretnego nadawcy lub domen „Od” | Gdy potrzebujesz raportowania na poziomie klienta lub marki w ramach tej samej infrastruktury. |
Ta konfiguracja jest bardzo potężna i jest ilustrowana poprzez serię przykładowych przypadków użycia (v5.0) w podręczniku użytkownika.
Możesz wybrać, które sygnały mają być aktywne:
Globalnie (to jest to, co użyliśmy w powyższym przykładzie)
Dla niektórych Wirtualnych MTA, a nie dla innych
Dla niektórych zbiorów Wirtualnych MTA, a nie dla innych
Dla konkretnych adresów „Nadawcy” lub „Od”, które są przekazywane przez PowerMTA, w połączeniu z selekcjami Wirtualnego MTA / zbiorów Wirtualnych MTA
Zakres | Co jest raportowane do Sygnałów | Kiedy go używać |
|---|---|---|
Globalny | Cały ruch z hosta PowerMTA | Proste wdrożenia, w których cały ruch powinien być przesyłany do Sygnałów SparkPost. |
Wirtualny MTA | Ruch tylko z wybranych Wirtualnych MTA | Gdy chcesz oddzielne widoki raportowania dla różnych adresów IP lub typów ruchu. |
Zbiór Wirtualnych MTA | Ruch z wybranych zbiorów Wirtualnych MTA | Gdy grupujesz adresy IP w zbiory i chcesz raportowanie na poziomie zbioru. |
Nadawca / domena „Od” | Wiadomości od konkretnego nadawcy lub domen „Od” | Gdy potrzebujesz raportowania na poziomie klienta lub marki w ramach tej samej infrastruktury. |
Ta konfiguracja jest bardzo potężna i jest ilustrowana poprzez serię przykładowych przypadków użycia (v5.0) w podręczniku użytkownika.
Testowanie, czy Twoje wydarzenia docierają do Signals
Oto widok SparkPost Signals, połączonego z PowerMTA. Możesz zobaczyć, że wynik zdrowia się zmienia.

Nazwy kampanii są dostępne jako elementy raportowania, obok Subkonto, Pula IP, Dostawca skrzynek pocztowych i Domeny wysyłania.
Oprócz przeglądania logów PowerMTA, możesz sprawdzić, czy dane o zdarzeniach docierają do SparkPost, patrząc na ekran integracji Signals.

Na ekranie wyszukiwania zdarzeń SparkPost powinieneś zobaczyć zdarzenia w ciągu kilku minut. Będą to obejmowały zdarzenia Wstrzyknięcia i Dostawy, a także Zatrzymania, a potencjalnie Zatrzymania poza zapadnięciem wściekłości i Zdarzenia skarg na spam, jeśli już skonfigurowałeś PowerMTA, aby te zdarzenia obsługiwał dla Ciebie.
Jeśli masz włączone śledzenie zaangażowania, zobaczysz również zdarzenia otwarcia , initial_open i kliknięcia .
Oto widok SparkPost Signals, połączonego z PowerMTA. Możesz zobaczyć, że wynik zdrowia się zmienia.

Nazwy kampanii są dostępne jako elementy raportowania, obok Subkonto, Pula IP, Dostawca skrzynek pocztowych i Domeny wysyłania.
Oprócz przeglądania logów PowerMTA, możesz sprawdzić, czy dane o zdarzeniach docierają do SparkPost, patrząc na ekran integracji Signals.

Na ekranie wyszukiwania zdarzeń SparkPost powinieneś zobaczyć zdarzenia w ciągu kilku minut. Będą to obejmowały zdarzenia Wstrzyknięcia i Dostawy, a także Zatrzymania, a potencjalnie Zatrzymania poza zapadnięciem wściekłości i Zdarzenia skarg na spam, jeśli już skonfigurowałeś PowerMTA, aby te zdarzenia obsługiwał dla Ciebie.
Jeśli masz włączone śledzenie zaangażowania, zobaczysz również zdarzenia otwarcia , initial_open i kliknięcia .
Oto widok SparkPost Signals, połączonego z PowerMTA. Możesz zobaczyć, że wynik zdrowia się zmienia.

Nazwy kampanii są dostępne jako elementy raportowania, obok Subkonto, Pula IP, Dostawca skrzynek pocztowych i Domeny wysyłania.
Oprócz przeglądania logów PowerMTA, możesz sprawdzić, czy dane o zdarzeniach docierają do SparkPost, patrząc na ekran integracji Signals.

Na ekranie wyszukiwania zdarzeń SparkPost powinieneś zobaczyć zdarzenia w ciągu kilku minut. Będą to obejmowały zdarzenia Wstrzyknięcia i Dostawy, a także Zatrzymania, a potencjalnie Zatrzymania poza zapadnięciem wściekłości i Zdarzenia skarg na spam, jeśli już skonfigurowałeś PowerMTA, aby te zdarzenia obsługiwał dla Ciebie.
Jeśli masz włączone śledzenie zaangażowania, zobaczysz również zdarzenia otwarcia , initial_open i kliknięcia .
Używanie znaczących nazw, które dobrze się prezentują w raportach
Ustalanie nazw wirtualnych puli PowerMTA i nazw zadań w sposób znaczący i czytelny dla ludzi jest warte wysiłku. Pojawiają się one bezpośrednio w Twoich aspektach sygnalizacji SparkPost i w raporcie podsumowującym.
Jak wspomniano wcześniej, nie musisz tworzyć tych pul w swoim koncie SparkPost. SparkPost pobiera je z konfiguracji PowerMTA.
Oto jak terminy konfiguracji PowerMTA przekładają się na terminy SparkPost.
Termin PowerMTA Termin Raportów / Sygnalizacji SparkPostDomena odbiorcy
(domain portion of “rcpt” field in Accounting file).Recipient Domain The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA. (domain portion of “orig” in Accounting file).Sending Domain VirtualMTA (name)—VirtualMTA Pool (name) (“vmtaPool” in accounting file)IP Pool (name) smtp-source-host a.b.c.d (“dlvSourceIp” in accounting file)Sending IP a.b.c.d Job (name) (“jobId” in accounting file)Campaign ID (name)—Template (name) “Subaccount” is not a native PowerMTA concept
Jednak PowerMTA może oznaczać wirtualne MTA, wirtualne pule MTA lub domeny Nadawcy lub Od z identyfikatorem subkonta do celów raportowania SparkPost.
Subaccount ID (number) FBL (event) Spam Complaint (event) Remote Bounce (event) Out-of-Band bounce (event)
Ustawienie co najmniej jednego adresu smtp-source-host umożliwia także SparkPost poprawne zidentyfikowanie adresu IP nadawcy, aby pojawił się w zdarzeniach dotyczących wstrzykiwania i dostarczania, a także w widoku raportu podsumowującego.
Nazwy zadań są ustalane w PowerMTA poprzez nagłówek w wstrzykniętej wiadomości. Umożliwia to indywidualną kontrolę nad zadaniami (wstrzymywanie/wznawianie itp.), co samo w sobie jest użyteczne, a PowerMTA przekazuje nazwy do raportowania sygnalizacji SparkPost jako „ID kampanii”. Zobacz Podręcznik Użytkownika sekcja 12.8 „Śledzenie kampanii w PowerMTA z JobID”.
Jest kilka rzeczy, o których warto pamiętać w kontekście nazywania zadań. Chociaż SparkPost (w formacie JSON i z ucieczką JSON) pozwala na użycie znaków takich jak <SPACE> w nazwach kampanii, nagłówki mailowe są bardziej restrykcyjne. Dozwolone znaki w nagłówku X-Job to:
A-Za-z0-9!#$%&'()*+,-./:;<=>?@[\]^_{|}~
Innymi słowy, niedozwolone znaki obejmują <SPACE>, cudzysłowy “ i znak odwrotny `. Jeśli przyzwyczaiłeś się do pracy z nazwami X-Job, to nie będzie zaskoczeniem, a Twoje nazwy ID kampanii będą po prostu działały w raportowaniu SparkPost. Jeśli tak jak ja, najpierw nauczyłeś się SparkPost, możesz chcieć narzędzia, aby upewnić się, że Twoje wartości X-Job są bezpieczne; zobacz funkcję dodatkową na końcu tego artykułu.
Termin PowerMTA | Termin Sygnalizacji SparkPost |
|---|---|
Wirtualne MTA | Pula IP |
Wirtualna pula MTA | Pula IP (grupowa) |
Nazwa Zadania (nagłówek X-Job) | ID kampanii |
smtp-source-host | Adres IP nadawcy |
Domena błędu | Identyfikacja domeny wysyłającej |
Domena Nadawcy/Od | Raportowanie w subkoncie / na poziomie domeny |
Ustalanie nazw wirtualnych puli PowerMTA i nazw zadań w sposób znaczący i czytelny dla ludzi jest warte wysiłku. Pojawiają się one bezpośrednio w Twoich aspektach sygnalizacji SparkPost i w raporcie podsumowującym.
Jak wspomniano wcześniej, nie musisz tworzyć tych pul w swoim koncie SparkPost. SparkPost pobiera je z konfiguracji PowerMTA.
Oto jak terminy konfiguracji PowerMTA przekładają się na terminy SparkPost.
Termin PowerMTA Termin Raportów / Sygnalizacji SparkPostDomena odbiorcy
(domain portion of “rcpt” field in Accounting file).Recipient Domain The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA. (domain portion of “orig” in Accounting file).Sending Domain VirtualMTA (name)—VirtualMTA Pool (name) (“vmtaPool” in accounting file)IP Pool (name) smtp-source-host a.b.c.d (“dlvSourceIp” in accounting file)Sending IP a.b.c.d Job (name) (“jobId” in accounting file)Campaign ID (name)—Template (name) “Subaccount” is not a native PowerMTA concept
Jednak PowerMTA może oznaczać wirtualne MTA, wirtualne pule MTA lub domeny Nadawcy lub Od z identyfikatorem subkonta do celów raportowania SparkPost.
Subaccount ID (number) FBL (event) Spam Complaint (event) Remote Bounce (event) Out-of-Band bounce (event)
Ustawienie co najmniej jednego adresu smtp-source-host umożliwia także SparkPost poprawne zidentyfikowanie adresu IP nadawcy, aby pojawił się w zdarzeniach dotyczących wstrzykiwania i dostarczania, a także w widoku raportu podsumowującego.
Nazwy zadań są ustalane w PowerMTA poprzez nagłówek w wstrzykniętej wiadomości. Umożliwia to indywidualną kontrolę nad zadaniami (wstrzymywanie/wznawianie itp.), co samo w sobie jest użyteczne, a PowerMTA przekazuje nazwy do raportowania sygnalizacji SparkPost jako „ID kampanii”. Zobacz Podręcznik Użytkownika sekcja 12.8 „Śledzenie kampanii w PowerMTA z JobID”.
Jest kilka rzeczy, o których warto pamiętać w kontekście nazywania zadań. Chociaż SparkPost (w formacie JSON i z ucieczką JSON) pozwala na użycie znaków takich jak <SPACE> w nazwach kampanii, nagłówki mailowe są bardziej restrykcyjne. Dozwolone znaki w nagłówku X-Job to:
A-Za-z0-9!#$%&'()*+,-./:;<=>?@[\]^_{|}~
Innymi słowy, niedozwolone znaki obejmują <SPACE>, cudzysłowy “ i znak odwrotny `. Jeśli przyzwyczaiłeś się do pracy z nazwami X-Job, to nie będzie zaskoczeniem, a Twoje nazwy ID kampanii będą po prostu działały w raportowaniu SparkPost. Jeśli tak jak ja, najpierw nauczyłeś się SparkPost, możesz chcieć narzędzia, aby upewnić się, że Twoje wartości X-Job są bezpieczne; zobacz funkcję dodatkową na końcu tego artykułu.
Termin PowerMTA | Termin Sygnalizacji SparkPost |
|---|---|
Wirtualne MTA | Pula IP |
Wirtualna pula MTA | Pula IP (grupowa) |
Nazwa Zadania (nagłówek X-Job) | ID kampanii |
smtp-source-host | Adres IP nadawcy |
Domena błędu | Identyfikacja domeny wysyłającej |
Domena Nadawcy/Od | Raportowanie w subkoncie / na poziomie domeny |
Ustalanie nazw wirtualnych puli PowerMTA i nazw zadań w sposób znaczący i czytelny dla ludzi jest warte wysiłku. Pojawiają się one bezpośrednio w Twoich aspektach sygnalizacji SparkPost i w raporcie podsumowującym.
Jak wspomniano wcześniej, nie musisz tworzyć tych pul w swoim koncie SparkPost. SparkPost pobiera je z konfiguracji PowerMTA.
Oto jak terminy konfiguracji PowerMTA przekładają się na terminy SparkPost.
Termin PowerMTA Termin Raportów / Sygnalizacji SparkPostDomena odbiorcy
(domain portion of “rcpt” field in Accounting file).Recipient Domain The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA. (domain portion of “orig” in Accounting file).Sending Domain VirtualMTA (name)—VirtualMTA Pool (name) (“vmtaPool” in accounting file)IP Pool (name) smtp-source-host a.b.c.d (“dlvSourceIp” in accounting file)Sending IP a.b.c.d Job (name) (“jobId” in accounting file)Campaign ID (name)—Template (name) “Subaccount” is not a native PowerMTA concept
Jednak PowerMTA może oznaczać wirtualne MTA, wirtualne pule MTA lub domeny Nadawcy lub Od z identyfikatorem subkonta do celów raportowania SparkPost.
Subaccount ID (number) FBL (event) Spam Complaint (event) Remote Bounce (event) Out-of-Band bounce (event)
Ustawienie co najmniej jednego adresu smtp-source-host umożliwia także SparkPost poprawne zidentyfikowanie adresu IP nadawcy, aby pojawił się w zdarzeniach dotyczących wstrzykiwania i dostarczania, a także w widoku raportu podsumowującego.
Nazwy zadań są ustalane w PowerMTA poprzez nagłówek w wstrzykniętej wiadomości. Umożliwia to indywidualną kontrolę nad zadaniami (wstrzymywanie/wznawianie itp.), co samo w sobie jest użyteczne, a PowerMTA przekazuje nazwy do raportowania sygnalizacji SparkPost jako „ID kampanii”. Zobacz Podręcznik Użytkownika sekcja 12.8 „Śledzenie kampanii w PowerMTA z JobID”.
Jest kilka rzeczy, o których warto pamiętać w kontekście nazywania zadań. Chociaż SparkPost (w formacie JSON i z ucieczką JSON) pozwala na użycie znaków takich jak <SPACE> w nazwach kampanii, nagłówki mailowe są bardziej restrykcyjne. Dozwolone znaki w nagłówku X-Job to:
A-Za-z0-9!#$%&'()*+,-./:;<=>?@[\]^_{|}~
Innymi słowy, niedozwolone znaki obejmują <SPACE>, cudzysłowy “ i znak odwrotny `. Jeśli przyzwyczaiłeś się do pracy z nazwami X-Job, to nie będzie zaskoczeniem, a Twoje nazwy ID kampanii będą po prostu działały w raportowaniu SparkPost. Jeśli tak jak ja, najpierw nauczyłeś się SparkPost, możesz chcieć narzędzia, aby upewnić się, że Twoje wartości X-Job są bezpieczne; zobacz funkcję dodatkową na końcu tego artykułu.
Termin PowerMTA | Termin Sygnalizacji SparkPost |
|---|---|
Wirtualne MTA | Pula IP |
Wirtualna pula MTA | Pula IP (grupowa) |
Nazwa Zadania (nagłówek X-Job) | ID kampanii |
smtp-source-host | Adres IP nadawcy |
Domena błędu | Identyfikacja domeny wysyłającej |
Domena Nadawcy/Od | Raportowanie w subkoncie / na poziomie domeny |
Wydarzenia FBL (skargi na spam) i zdalne (poza kanałem) odrzuty
PowerMTA może odbierać i przetwarzać zdarzenia FBL (znane w SparkPost jako zdarzenia skarg na spam) oraz zdalne odbicia (znane w SparkPost jako odbicia poza pasmem, ponieważ odpowiedź wraca po pewnym czasie, a nie w trakcie rozmowy SMTP).
W Forum Wsparcia Port25 znajdują się artykuły na temat konfiguracji Procesora Odbicia oraz Procesora FBL. Jeśli jesteś obecnym użytkownikiem PowerMTA, prawdopodobnie już je masz.
Oto konfiguracja, którą przygotowałem na potrzeby prezentacji, oparta na tych artykułach i skierowana na hosting PowerMTA w Amazon EC2.
Jeśli znasz się na konfiguracji PowerMTA w tej dziedzinie, możesz pominąć tę część, aż do następnej poziomej linii.
PowerMTA może odbierać i przetwarzać zdarzenia FBL (znane w SparkPost jako zdarzenia skarg na spam) oraz zdalne odbicia (znane w SparkPost jako odbicia poza pasmem, ponieważ odpowiedź wraca po pewnym czasie, a nie w trakcie rozmowy SMTP).
W Forum Wsparcia Port25 znajdują się artykuły na temat konfiguracji Procesora Odbicia oraz Procesora FBL. Jeśli jesteś obecnym użytkownikiem PowerMTA, prawdopodobnie już je masz.
Oto konfiguracja, którą przygotowałem na potrzeby prezentacji, oparta na tych artykułach i skierowana na hosting PowerMTA w Amazon EC2.
Jeśli znasz się na konfiguracji PowerMTA w tej dziedzinie, możesz pominąć tę część, aż do następnej poziomej linii.
PowerMTA może odbierać i przetwarzać zdarzenia FBL (znane w SparkPost jako zdarzenia skarg na spam) oraz zdalne odbicia (znane w SparkPost jako odbicia poza pasmem, ponieważ odpowiedź wraca po pewnym czasie, a nie w trakcie rozmowy SMTP).
W Forum Wsparcia Port25 znajdują się artykuły na temat konfiguracji Procesora Odbicia oraz Procesora FBL. Jeśli jesteś obecnym użytkownikiem PowerMTA, prawdopodobnie już je masz.
Oto konfiguracja, którą przygotowałem na potrzeby prezentacji, oparta na tych artykułach i skierowana na hosting PowerMTA w Amazon EC2.
Jeśli znasz się na konfiguracji PowerMTA w tej dziedzinie, możesz pominąć tę część, aż do następnej poziomej linii.
Konfiguracja wstrzykiwania
Użyjemy portu 587 dla wstrzykniętych wiadomości, które będą przychodzić przez publiczny Internet z innego hosta. Musimy powstrzymać złych aktorów przed odkrywaniem i nadużywaniem tej usługi, więc stosujemy uwierzytelnianie za pomocą nazwy użytkownika/hasła oraz opcjonalne TLS, podobnie jak w punktach wstrzykiwania SMTP SparkPost.
Chcemy mieć możliwość wysyłania wiadomości z źródeł, które są odpowiednio uwierzytelnione do dowolnego miejsca docelowego. Chcemy też oddzielnego nasłuchu na porcie 25 dla odpowiedzi FBL i zdalnych odbić, które nie wymagają uwierzytelnienia.
# IP address(es) and port(s) on which to listen for incoming SMTP connections smtp-listener 0.0.0.0:587 smtp-listener 0.0.0.0:25
W poniższych deklaracjach <source> korzystamy z uwierzytelniania za pomocą nazwy użytkownika/hasła oraz opcjonalnego TLS, aby bronić się przed wstrzyknięciem złośliwych wiadomości. Ustalamy również limity szybkości na połączenia przy podejmowaniu nieudanych prób hasła.
Twoja konfiguracja może być inna; na przykład, jeśli masz prywatną sieć między wstrzykiwaczem a PowerMTA, nie będziesz potrzebować uwierzytelniania hasłem.
# One source rule for all injection, internal or external. Enforce auth, except for bounces and FBLs # <source 0/0> log-connections false log-commands false # WARNING: verbose! just for dev log-data false # WARNING: even more verbose! smtp-service true # allow SMTP service smtp-max-auth-failure-rate 1/min allow-unencrypted-plain-auth false allow-starttls true rewrite-list mfrom </source> <source {auth}> always-allow-relaying yes # only if the auth succeeds default-virtual-mta default process-x-job true </source>
Deklaracja <source {auth}> (zobacz tutaj. v5.0) ma zastosowanie po pomyślnym uwierzytelnieniu. Tutaj zezwala na dalsze przesyłanie, ustawia domyślną grupę wirtualnego MTA do użycia i dodaje nagłówek X-Job (który będzie raportowany przez SparkPost Signals jako campaign_id).
Rewrite-list mapuje wstrzyknięte wiadomości, aby używały określonej domeny MAIL FROM (znanej również jako domena odbić lub Return-Path:).
# # Rewrite the MAIL FROM address to match the bounce domain # <rewrite-list mfrom> mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net </rewrite-list>
Następnie skonfigurujemy nasze ustawienia TLS i nazwę użytkownika / hasło SMTP, zgodnie z aktualnymi zaleceniami.
# # Secure the inbound service with username, password and TLS. SMT 2020-06-15 # smtp-server-tls-certificate /etc/pmta/pmtasignalsdemo.pem smtp-server-tls-allow-tlsv1 false smtp-server-tls-allow-tlsv1.1 false smtp-server-tls-allow-tlsv1.2 true smtp-server-tls-allow-tlsv1.3 true # # SMTP users (authenticated via SMTP AUTH) # <smtp-user SMTP_Injection> password ##PUT YOUR PASSWORD HERE## authentication-method password </smtp-user>
Możemy sprawdzić, że (niebezpieczne, deprecjonowane) TLS v1.0 nie jest akceptowane przy użyciu mojego ulubionego narzędzia testowego SMTP, swaks.
swaks --server pmta.signalsdemo.trymsys.net --port 587 \ --to test@trymsys.net \ --from any@sparkpost.com \ --tls \ --tls-protocol tlsv1
Widzimy:
*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0)) *** STARTTLS attempted but failed
Podobnie dla –tls-protocol tlsv1_1.
Zastosujemy również podpisywanie DKIM dla naszych wychodzących wiadomości, ponieważ to dobra praktyka (przestrzegałem tych instrukcji, aby skonfigurować klucz).
# # DKIM # domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem
Użyjemy portu 587 dla wstrzykniętych wiadomości, które będą przychodzić przez publiczny Internet z innego hosta. Musimy powstrzymać złych aktorów przed odkrywaniem i nadużywaniem tej usługi, więc stosujemy uwierzytelnianie za pomocą nazwy użytkownika/hasła oraz opcjonalne TLS, podobnie jak w punktach wstrzykiwania SMTP SparkPost.
Chcemy mieć możliwość wysyłania wiadomości z źródeł, które są odpowiednio uwierzytelnione do dowolnego miejsca docelowego. Chcemy też oddzielnego nasłuchu na porcie 25 dla odpowiedzi FBL i zdalnych odbić, które nie wymagają uwierzytelnienia.
# IP address(es) and port(s) on which to listen for incoming SMTP connections smtp-listener 0.0.0.0:587 smtp-listener 0.0.0.0:25
W poniższych deklaracjach <source> korzystamy z uwierzytelniania za pomocą nazwy użytkownika/hasła oraz opcjonalnego TLS, aby bronić się przed wstrzyknięciem złośliwych wiadomości. Ustalamy również limity szybkości na połączenia przy podejmowaniu nieudanych prób hasła.
Twoja konfiguracja może być inna; na przykład, jeśli masz prywatną sieć między wstrzykiwaczem a PowerMTA, nie będziesz potrzebować uwierzytelniania hasłem.
# One source rule for all injection, internal or external. Enforce auth, except for bounces and FBLs # <source 0/0> log-connections false log-commands false # WARNING: verbose! just for dev log-data false # WARNING: even more verbose! smtp-service true # allow SMTP service smtp-max-auth-failure-rate 1/min allow-unencrypted-plain-auth false allow-starttls true rewrite-list mfrom </source> <source {auth}> always-allow-relaying yes # only if the auth succeeds default-virtual-mta default process-x-job true </source>
Deklaracja <source {auth}> (zobacz tutaj. v5.0) ma zastosowanie po pomyślnym uwierzytelnieniu. Tutaj zezwala na dalsze przesyłanie, ustawia domyślną grupę wirtualnego MTA do użycia i dodaje nagłówek X-Job (który będzie raportowany przez SparkPost Signals jako campaign_id).
Rewrite-list mapuje wstrzyknięte wiadomości, aby używały określonej domeny MAIL FROM (znanej również jako domena odbić lub Return-Path:).
# # Rewrite the MAIL FROM address to match the bounce domain # <rewrite-list mfrom> mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net </rewrite-list>
Następnie skonfigurujemy nasze ustawienia TLS i nazwę użytkownika / hasło SMTP, zgodnie z aktualnymi zaleceniami.
# # Secure the inbound service with username, password and TLS. SMT 2020-06-15 # smtp-server-tls-certificate /etc/pmta/pmtasignalsdemo.pem smtp-server-tls-allow-tlsv1 false smtp-server-tls-allow-tlsv1.1 false smtp-server-tls-allow-tlsv1.2 true smtp-server-tls-allow-tlsv1.3 true # # SMTP users (authenticated via SMTP AUTH) # <smtp-user SMTP_Injection> password ##PUT YOUR PASSWORD HERE## authentication-method password </smtp-user>
Możemy sprawdzić, że (niebezpieczne, deprecjonowane) TLS v1.0 nie jest akceptowane przy użyciu mojego ulubionego narzędzia testowego SMTP, swaks.
swaks --server pmta.signalsdemo.trymsys.net --port 587 \ --to test@trymsys.net \ --from any@sparkpost.com \ --tls \ --tls-protocol tlsv1
Widzimy:
*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0)) *** STARTTLS attempted but failed
Podobnie dla –tls-protocol tlsv1_1.
Zastosujemy również podpisywanie DKIM dla naszych wychodzących wiadomości, ponieważ to dobra praktyka (przestrzegałem tych instrukcji, aby skonfigurować klucz).
# # DKIM # domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem
Użyjemy portu 587 dla wstrzykniętych wiadomości, które będą przychodzić przez publiczny Internet z innego hosta. Musimy powstrzymać złych aktorów przed odkrywaniem i nadużywaniem tej usługi, więc stosujemy uwierzytelnianie za pomocą nazwy użytkownika/hasła oraz opcjonalne TLS, podobnie jak w punktach wstrzykiwania SMTP SparkPost.
Chcemy mieć możliwość wysyłania wiadomości z źródeł, które są odpowiednio uwierzytelnione do dowolnego miejsca docelowego. Chcemy też oddzielnego nasłuchu na porcie 25 dla odpowiedzi FBL i zdalnych odbić, które nie wymagają uwierzytelnienia.
# IP address(es) and port(s) on which to listen for incoming SMTP connections smtp-listener 0.0.0.0:587 smtp-listener 0.0.0.0:25
W poniższych deklaracjach <source> korzystamy z uwierzytelniania za pomocą nazwy użytkownika/hasła oraz opcjonalnego TLS, aby bronić się przed wstrzyknięciem złośliwych wiadomości. Ustalamy również limity szybkości na połączenia przy podejmowaniu nieudanych prób hasła.
Twoja konfiguracja może być inna; na przykład, jeśli masz prywatną sieć między wstrzykiwaczem a PowerMTA, nie będziesz potrzebować uwierzytelniania hasłem.
# One source rule for all injection, internal or external. Enforce auth, except for bounces and FBLs # <source 0/0> log-connections false log-commands false # WARNING: verbose! just for dev log-data false # WARNING: even more verbose! smtp-service true # allow SMTP service smtp-max-auth-failure-rate 1/min allow-unencrypted-plain-auth false allow-starttls true rewrite-list mfrom </source> <source {auth}> always-allow-relaying yes # only if the auth succeeds default-virtual-mta default process-x-job true </source>
Deklaracja <source {auth}> (zobacz tutaj. v5.0) ma zastosowanie po pomyślnym uwierzytelnieniu. Tutaj zezwala na dalsze przesyłanie, ustawia domyślną grupę wirtualnego MTA do użycia i dodaje nagłówek X-Job (który będzie raportowany przez SparkPost Signals jako campaign_id).
Rewrite-list mapuje wstrzyknięte wiadomości, aby używały określonej domeny MAIL FROM (znanej również jako domena odbić lub Return-Path:).
# # Rewrite the MAIL FROM address to match the bounce domain # <rewrite-list mfrom> mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net </rewrite-list>
Następnie skonfigurujemy nasze ustawienia TLS i nazwę użytkownika / hasło SMTP, zgodnie z aktualnymi zaleceniami.
# # Secure the inbound service with username, password and TLS. SMT 2020-06-15 # smtp-server-tls-certificate /etc/pmta/pmtasignalsdemo.pem smtp-server-tls-allow-tlsv1 false smtp-server-tls-allow-tlsv1.1 false smtp-server-tls-allow-tlsv1.2 true smtp-server-tls-allow-tlsv1.3 true # # SMTP users (authenticated via SMTP AUTH) # <smtp-user SMTP_Injection> password ##PUT YOUR PASSWORD HERE## authentication-method password </smtp-user>
Możemy sprawdzić, że (niebezpieczne, deprecjonowane) TLS v1.0 nie jest akceptowane przy użyciu mojego ulubionego narzędzia testowego SMTP, swaks.
swaks --server pmta.signalsdemo.trymsys.net --port 587 \ --to test@trymsys.net \ --from any@sparkpost.com \ --tls \ --tls-protocol tlsv1
Widzimy:
*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0)) *** STARTTLS attempted but failed
Podobnie dla –tls-protocol tlsv1_1.
Zastosujemy również podpisywanie DKIM dla naszych wychodzących wiadomości, ponieważ to dobra praktyka (przestrzegałem tych instrukcji, aby skonfigurować klucz).
# # DKIM # domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem
Konfiguracja i nazewnictwo VirtualMTA
PowerMTA VirtualMTAs (i pule VirtualMTA) to potężne funkcje do zarządzania strumieniami wiadomości, a raportowanie funkcji PowerMTA / SparkPost Signals działa najlepiej, gdy są one aktywne.
# # Route all outgoing traffic through this virtual mta / pool. # # Declare the delivery IP address here, so that SparkPost signals ingest injection (aka "reception") events # will carry the correct sending_IP attribute # <virtual-mta mta1> smtp-source-host 172.31.25.101 pmta.signalsdemo.trymsys.net </virtual-mta> <virtual-mta-pool default> virtual-mta mta1 <domain *> max-smtp-out 20 # max. connections *per domain* bounce-after 4d12h # 4 days, 12 hours retry-after 10m # 10 minutes dkim-sign yes </domain> </virtual-mta-pool>
Ustawienie virtual-mta-pool jest zgłaszane w SparkPost jako „IP Pool” i jest dostępne jako aspekt raportowania SparkPost Signals (rozwijane menu pod wykresami).

Raport podsumowujący pokazuje również IP Pool jako aspekt raportowania „Grupa według”.

Jak wspomniano wcześniej w tym artykule, skonfigurowanie przynajmniej jednego adresu smtp-source-host umożliwia również SparkPost prawidłowe zidentyfikowanie adresu IP nadawcy, aby pojawił się on w zdarzeniach dotyczących wstrzykiwania i dostawy oraz w raporcie podsumowującym:

To wszystko, czego potrzebujesz, aby uzyskać podstawową integrację między PowerMTA a SparkPost Signals. Znajdziesz pełny przykład pliku konfiguracyjnego tutaj.
Zanim odejdziesz, oto dodatkowa funkcja, o której wspomniałem.
PowerMTA VirtualMTAs (i pule VirtualMTA) to potężne funkcje do zarządzania strumieniami wiadomości, a raportowanie funkcji PowerMTA / SparkPost Signals działa najlepiej, gdy są one aktywne.
# # Route all outgoing traffic through this virtual mta / pool. # # Declare the delivery IP address here, so that SparkPost signals ingest injection (aka "reception") events # will carry the correct sending_IP attribute # <virtual-mta mta1> smtp-source-host 172.31.25.101 pmta.signalsdemo.trymsys.net </virtual-mta> <virtual-mta-pool default> virtual-mta mta1 <domain *> max-smtp-out 20 # max. connections *per domain* bounce-after 4d12h # 4 days, 12 hours retry-after 10m # 10 minutes dkim-sign yes </domain> </virtual-mta-pool>
Ustawienie virtual-mta-pool jest zgłaszane w SparkPost jako „IP Pool” i jest dostępne jako aspekt raportowania SparkPost Signals (rozwijane menu pod wykresami).

Raport podsumowujący pokazuje również IP Pool jako aspekt raportowania „Grupa według”.

Jak wspomniano wcześniej w tym artykule, skonfigurowanie przynajmniej jednego adresu smtp-source-host umożliwia również SparkPost prawidłowe zidentyfikowanie adresu IP nadawcy, aby pojawił się on w zdarzeniach dotyczących wstrzykiwania i dostawy oraz w raporcie podsumowującym:

To wszystko, czego potrzebujesz, aby uzyskać podstawową integrację między PowerMTA a SparkPost Signals. Znajdziesz pełny przykład pliku konfiguracyjnego tutaj.
Zanim odejdziesz, oto dodatkowa funkcja, o której wspomniałem.
PowerMTA VirtualMTAs (i pule VirtualMTA) to potężne funkcje do zarządzania strumieniami wiadomości, a raportowanie funkcji PowerMTA / SparkPost Signals działa najlepiej, gdy są one aktywne.
# # Route all outgoing traffic through this virtual mta / pool. # # Declare the delivery IP address here, so that SparkPost signals ingest injection (aka "reception") events # will carry the correct sending_IP attribute # <virtual-mta mta1> smtp-source-host 172.31.25.101 pmta.signalsdemo.trymsys.net </virtual-mta> <virtual-mta-pool default> virtual-mta mta1 <domain *> max-smtp-out 20 # max. connections *per domain* bounce-after 4d12h # 4 days, 12 hours retry-after 10m # 10 minutes dkim-sign yes </domain> </virtual-mta-pool>
Ustawienie virtual-mta-pool jest zgłaszane w SparkPost jako „IP Pool” i jest dostępne jako aspekt raportowania SparkPost Signals (rozwijane menu pod wykresami).

Raport podsumowujący pokazuje również IP Pool jako aspekt raportowania „Grupa według”.

Jak wspomniano wcześniej w tym artykule, skonfigurowanie przynajmniej jednego adresu smtp-source-host umożliwia również SparkPost prawidłowe zidentyfikowanie adresu IP nadawcy, aby pojawił się on w zdarzeniach dotyczących wstrzykiwania i dostawy oraz w raporcie podsumowującym:

To wszystko, czego potrzebujesz, aby uzyskać podstawową integrację między PowerMTA a SparkPost Signals. Znajdziesz pełny przykład pliku konfiguracyjnego tutaj.
Zanim odejdziesz, oto dodatkowa funkcja, o której wspomniałem.
Funkcja dodatkowa: Sprawdzanie/filtracja nazwy X-Job
Aby zapewnić, że każdy ciąg znaków jest bezpieczny do użycia jako nazwa zadania X-Job PowerMTA, oto prostą funkcję Pythona, która mapuje wszelkie niebezpieczne znaki na podkreślenie „_”
import re def pmtaSafeJobID(s): """ :param s: str :return: str Map an arbitrary campaign ID string into allowed chars for PMTA X-Job header. See https://download.port25.com/files/UsersGuide-5.0.html#tracking-a-campaign-in-powermta-with-a-jobid Specifically disallow <sp> " ` but allow through most other chars. """ # Note have to escape ' - [ ] and double-escape \ - see https://docs.python.org/3/library/re.html disallowedChars = '[^A-Za-z0-9!#$%&\'()*+,\-./:;<=>?@$begin:math:display$\\\\\\\\$end:math:display$^_{|}~]' return re.sub(disallowedChars, '_', s)
To korzysta z wyrażeń regularnych Pythona w specyficzny sposób. Deklaruje zbiór zabronionych znaków za pomocą operatora „komplementu zbioru” ^ zamiast wymieniać wszystkie dozwolone znaki. Oznacza to, że przechwytujemy (i zabezpieczamy) znaki poza zwykłym zestawem 7-bitowym. Możemy to pokazać, używając tego fragmentu testowego:
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Daje
!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________
Możesz zobaczyć, że <SPACE>, podwójne cudzysłowy „, i backtick `, a także wszystkie znaki poza ~ są mapowane na podkreślenie.
Aby zapewnić, że każdy ciąg znaków jest bezpieczny do użycia jako nazwa zadania X-Job PowerMTA, oto prostą funkcję Pythona, która mapuje wszelkie niebezpieczne znaki na podkreślenie „_”
import re def pmtaSafeJobID(s): """ :param s: str :return: str Map an arbitrary campaign ID string into allowed chars for PMTA X-Job header. See https://download.port25.com/files/UsersGuide-5.0.html#tracking-a-campaign-in-powermta-with-a-jobid Specifically disallow <sp> " ` but allow through most other chars. """ # Note have to escape ' - [ ] and double-escape \ - see https://docs.python.org/3/library/re.html disallowedChars = '[^A-Za-z0-9!#$%&\'()*+,\-./:;<=>?@$begin:math:display$\\\\\\\\$end:math:display$^_{|}~]' return re.sub(disallowedChars, '_', s)
To korzysta z wyrażeń regularnych Pythona w specyficzny sposób. Deklaruje zbiór zabronionych znaków za pomocą operatora „komplementu zbioru” ^ zamiast wymieniać wszystkie dozwolone znaki. Oznacza to, że przechwytujemy (i zabezpieczamy) znaki poza zwykłym zestawem 7-bitowym. Możemy to pokazać, używając tego fragmentu testowego:
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Daje
!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________
Możesz zobaczyć, że <SPACE>, podwójne cudzysłowy „, i backtick `, a także wszystkie znaki poza ~ są mapowane na podkreślenie.
Aby zapewnić, że każdy ciąg znaków jest bezpieczny do użycia jako nazwa zadania X-Job PowerMTA, oto prostą funkcję Pythona, która mapuje wszelkie niebezpieczne znaki na podkreślenie „_”
import re def pmtaSafeJobID(s): """ :param s: str :return: str Map an arbitrary campaign ID string into allowed chars for PMTA X-Job header. See https://download.port25.com/files/UsersGuide-5.0.html#tracking-a-campaign-in-powermta-with-a-jobid Specifically disallow <sp> " ` but allow through most other chars. """ # Note have to escape ' - [ ] and double-escape \ - see https://docs.python.org/3/library/re.html disallowedChars = '[^A-Za-z0-9!#$%&\'()*+,\-./:;<=>?@$begin:math:display$\\\\\\\\$end:math:display$^_{|}~]' return re.sub(disallowedChars, '_', s)
To korzysta z wyrażeń regularnych Pythona w specyficzny sposób. Deklaruje zbiór zabronionych znaków za pomocą operatora „komplementu zbioru” ^ zamiast wymieniać wszystkie dozwolone znaki. Oznacza to, że przechwytujemy (i zabezpieczamy) znaki poza zwykłym zestawem 7-bitowym. Możemy to pokazać, używając tego fragmentu testowego:
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Daje
!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________
Możesz zobaczyć, że <SPACE>, podwójne cudzysłowy „, i backtick `, a także wszystkie znaki poza ~ są mapowane na podkreślenie.



