Zasięg

Grow

Manage

Automate

Zasięg

Grow

Manage

Automate

Przewodnik po migracji e-maili z serwera lokalnego do chmury

Ptak

28 cze 2020

Email

1 min read

Przewodnik po migracji e-maili z serwera lokalnego do chmury

Ptak

28 cze 2020

Email

1 min read

Przewodnik po migracji e-maili z serwera lokalnego do chmury

Wiele razy słyszymy pytanie: „Czy macie jakiś podręcznik, który opisuje proces migracji z instalacji lokalnej na Bird”?

Tak, rzeczywiście mamy. Czytaj dalej.

Najpierw trochę tła. Usługa Bird Cloud została stworzona w 2014 roku z powodu ogromnego sukcesu rozwiązania On-Premises Momentum MTA. Momentum znajduje się w rdzeniu Bird Cloud, zapewniając szybkie dostarczanie i kształtowanie ruchu dla tysięcy klientów korzystających z usług chmurowych. Dzięki temu Momentum otrzymuje dużą część naszej uwagi inżynierskiej, ale wyniki tej pracy często są ukryte w ulepszeniach wydajności, które nie zyskują dużego rozgłosu.  Klienci Momentum widzą korzyści z tej pracy za każdym razem, gdy publikowane jest nowe publiczne wydanie Momentum.

To NIE oznacza, że Bird to tylko „Momentum w Chmurze”. MessageBird to znacznie więcej i może przynieść dodatkowe korzyści dla klientów, którzy zdecydują się na migrację lub użycie ich w podejściu hybrydowym. Te korzyści wynikają z naszej nowoczesnej opartej na chmurze architektury API e-mail, która zapewnia możliwości niedostępne w tradycyjnych rozwiązaniach lokalnych. Ponadto ułatwiliśmy PowerMTA klientom migrację lub użycie PowerMTA wraz z Bird w konfiguracji hybrydowej. Reszta tego dokumentu opisze szczegółowo, jak można zmigrować strumienie wiadomości z Momentum lub PowerMTA do usługi Bird Cloud. 

W rzeczywistości należy rozważyć dwa oddzielne scenariusze przy migracji do Bird z Momentum lub PowerMTA. 

  1. Jesteś gotów całkowicie opuścić świat lokalny, zamknąć swoje fizyczne centra danych i nie zarządzać już bezpośrednio żadnym lokalnym MTA.  Oznacza to wyeliminowanie Momentum lub PowerMTA z wdrożenia i wysyłanie wiadomości bezpośrednio do SparkPost do obsługi wiadomości. Przed wycofaniem swojej infrastruktury lokalnej upewnij się, że masz kompleksowe kopie zapasowe bazy danych wszystkich systemów krytycznych, zwłaszcza jeśli używasz baz danych PostgreSQL, które zawierają ważne dane historyczne lub konfiguracje.

  2. Masz powód, aby zachować pewien lokalny ślad z jakiegoś powodu.  Niektóre możliwości mogą obejmować:

  • specyficzne strumienie dostarczania, które wymagają wstępnego przetworzenia w Momentum

  • rozdzielanie pojemności dla potrzeb zwiększania mocy lub odzyskiwania po awarii

  • obsługa klientów korzystających z PMTA, podczas gdy nowi klienci przechodzą na SparkPost

 … wtedy chcesz przekazać inne wiadomości do Bird w celu dalszej obsługi wiadomości.  

W każdej sytuacji musisz być świadomy, że Bird zaakceptuje do dostarczania tylko wiadomości SMTP wstrzykiwane przez port 587 lub 2525 i używające SMTP_Auth z określonym nazwą użytkownika i hasłem (Zobacz dokumentację SMTP tutaj). Zdecydowanie zalecamy również połączenie z wykorzystaniem połączenia TLS, ale nie jest to ściśle wymagane. Jeśli całkowicie zastępujesz warstwę MTA (scenariusz 1), warto także rozważyć użycie API REST Transmissions, które może akceptować wiadomości przez połączenia HTTPS. Dokumentacja tego API jest tutaj.

Dla organizacji utrzymujących infrastrukturę lokalną, która wymaga bezpiecznych możliwości e-mail, nasz przewodnik wdrożeniowy S/MIME dla PowerMTA i Momentum zapewnia szczegółowe instrukcje konfiguracji dla dostarczania zaszyfrowanych wiadomości e-mail.

Którą opcję powinienem wybrać?

Aby ustalić, czy jesteś w opcji nr 1 czy opcji nr 2, weź pod uwagę te czynniki:

  • Czy używasz silnika skryptowego Lua od Momentum do czegoś bardziej skomplikowanego niż routowanie wiadomości?

    • Lua jest wszechstronnym narzędziem skryptowym do manipulacji wiadomościami w czasie rzeczywistym, ale zdecydowana większość naszych użytkowników używa go jedynie do wybierania wiązań do dostarczenia.  Jeśli tak jest, możesz zmodyfikować swój kod generacji, aby dodać atrybut ip_pool do nagłówka X-MSYS-API i pozwolić Bird przydzielić trasę za ciebie. 

    • Jeśli używasz Lua do bardziej skomplikowanych operacji, takich jak filtrowanie treści, przepisywanie Mail_From lub obliczenia tempa wiadomości, i nie jest to możliwe do przeniesienia tej logiki do aplikacji wejściowej, możesz rozważyć przejście do opcji nr 2.

  • Czy twój system generowania jest w stanie wysyłać wiadomości przez port 587 z użyciem TLS i SMTP_Auth?

    • Niektóre systemy zarządzania kampaniami mogą wysyłać pocztę jedynie przez port 25 w formie niezaszyfrowanej. To powoduje problem bezpieczeństwa dla Bird, więc możesz rozważyć opcję nr 2.

  • Czy używasz składni zastępczej PowerMTA lub innej modyfikacji wiadomości w czasie rzeczywistym?

    • Jeśli możesz przenieść tę funkcję do generatorów lub użyć języka Template Language Bird, to nadal możesz korzystać z opcji nr 1, ale w przeciwnym razie możesz potrzebować pozostawienia węzła PMTA online dla tej modyfikacji wiadomości przed wysyłką do Bird.

  • Czy potrzebujesz skanowania AV/AS przychodzących przed wprowadzeniem wiadomości? Chociaż jest to możliwe w Momentum i PowerMTA, eBird zakłada, że te kontrole zostały już wykonane.  Możesz rozważyć ich wykonanie przed wprowadzeniem wiadomości.

Bez względu na to, którą drogę wybierzesz, na pewno wpłynie to na twoją relację handlową.  Jak możesz sobie wyobrazić, to nie jest nasz pierwszy raz. Pamiętaj, aby angażować swojego Menedżera Kont Handlowych i Menedżera Sukcesu Klienta, abyśmy mogli Ci pomóc w szczegółach i upewnić się, że otrzymujesz najlepszą wartość za swoje pieniądze.

Dla Opcji #1 Camp (Going “cold turkey”):

Załóżmy, że zgadzasz się z opcją 1 i jesteś gotowy do wyłączenia swoich lokalnych MTA i zdecydowałeś się kontynuować korzystanie z metody wstrzykiwania SMTP, nie zmieniając systemów tworzenia wiadomości w ogóle. Twoje systemy generujące powinny tworzyć w pełni sformatowaną wiadomość SMTP, a następnie przesłać do Bird przez TLS przy użyciu SMTP_AUTH, gdzie nazwa użytkownika i hasło są opisane na tej stronie. Pamiętaj, że „hasło” to klucz API, który generujesz na swoim koncie Bird z włączoną opcją dostarczania SMTP.

Jeśli jesteś w obozie Opcji nr 1, rozważ przełączenie się na REST API bezpośrednio z systemu generacji. W większości przypadków stwierdzamy, że systemy przetwarzania klientów już używają JSON przez HTTP i muszą konwertować do SMTP przed wstrzyknięciem. Możesz pominąć ten krok i wysłać to bezpośrednio do nas jako sformatowany JSON jako ładunek REST.

Jeśli zdecydujesz się wstrzykiwać za pomocą REST API, być może będziesz musiał nieco zmienić swój system tworzenia treści, ale może to być tego warte. Możesz dowiedzieć się więcej tutaj.

Jednym z największych obaw dużych ESP dotyczących migracji jest IP Warming. Zazwyczaj poświęcili wiele lat starannie pielęgnując swoje zasoby adresów IP, więc myśl o porzuceniu całej tej pracy jest bolesna. Bird opracował proces Bring Your Own IP (BYOIP), który rozwiązuje ten problem. Jeśli masz co najmniej jeden ciągły blok /24 CIDR, Bird może używać tych istniejących adresów IP do dostarczania, co oszczędza ci ból konieczności ponownego ich rozgrzewania. Jeśli możesz skorzystać z tej opcji, możesz pominąć sekcję tutaj dotyczącą rozgrzewania IP.

Jeśli czujesz, że jesteś gotowy, aby iść dalej, przejdź do „Making it happen”

Załóżmy, że zgadzasz się z opcją 1 i jesteś gotowy do wyłączenia swoich lokalnych MTA i zdecydowałeś się kontynuować korzystanie z metody wstrzykiwania SMTP, nie zmieniając systemów tworzenia wiadomości w ogóle. Twoje systemy generujące powinny tworzyć w pełni sformatowaną wiadomość SMTP, a następnie przesłać do Bird przez TLS przy użyciu SMTP_AUTH, gdzie nazwa użytkownika i hasło są opisane na tej stronie. Pamiętaj, że „hasło” to klucz API, który generujesz na swoim koncie Bird z włączoną opcją dostarczania SMTP.

Jeśli jesteś w obozie Opcji nr 1, rozważ przełączenie się na REST API bezpośrednio z systemu generacji. W większości przypadków stwierdzamy, że systemy przetwarzania klientów już używają JSON przez HTTP i muszą konwertować do SMTP przed wstrzyknięciem. Możesz pominąć ten krok i wysłać to bezpośrednio do nas jako sformatowany JSON jako ładunek REST.

Jeśli zdecydujesz się wstrzykiwać za pomocą REST API, być może będziesz musiał nieco zmienić swój system tworzenia treści, ale może to być tego warte. Możesz dowiedzieć się więcej tutaj.

Jednym z największych obaw dużych ESP dotyczących migracji jest IP Warming. Zazwyczaj poświęcili wiele lat starannie pielęgnując swoje zasoby adresów IP, więc myśl o porzuceniu całej tej pracy jest bolesna. Bird opracował proces Bring Your Own IP (BYOIP), który rozwiązuje ten problem. Jeśli masz co najmniej jeden ciągły blok /24 CIDR, Bird może używać tych istniejących adresów IP do dostarczania, co oszczędza ci ból konieczności ponownego ich rozgrzewania. Jeśli możesz skorzystać z tej opcji, możesz pominąć sekcję tutaj dotyczącą rozgrzewania IP.

Jeśli czujesz, że jesteś gotowy, aby iść dalej, przejdź do „Making it happen”

Załóżmy, że zgadzasz się z opcją 1 i jesteś gotowy do wyłączenia swoich lokalnych MTA i zdecydowałeś się kontynuować korzystanie z metody wstrzykiwania SMTP, nie zmieniając systemów tworzenia wiadomości w ogóle. Twoje systemy generujące powinny tworzyć w pełni sformatowaną wiadomość SMTP, a następnie przesłać do Bird przez TLS przy użyciu SMTP_AUTH, gdzie nazwa użytkownika i hasło są opisane na tej stronie. Pamiętaj, że „hasło” to klucz API, który generujesz na swoim koncie Bird z włączoną opcją dostarczania SMTP.

Jeśli jesteś w obozie Opcji nr 1, rozważ przełączenie się na REST API bezpośrednio z systemu generacji. W większości przypadków stwierdzamy, że systemy przetwarzania klientów już używają JSON przez HTTP i muszą konwertować do SMTP przed wstrzyknięciem. Możesz pominąć ten krok i wysłać to bezpośrednio do nas jako sformatowany JSON jako ładunek REST.

Jeśli zdecydujesz się wstrzykiwać za pomocą REST API, być może będziesz musiał nieco zmienić swój system tworzenia treści, ale może to być tego warte. Możesz dowiedzieć się więcej tutaj.

Jednym z największych obaw dużych ESP dotyczących migracji jest IP Warming. Zazwyczaj poświęcili wiele lat starannie pielęgnując swoje zasoby adresów IP, więc myśl o porzuceniu całej tej pracy jest bolesna. Bird opracował proces Bring Your Own IP (BYOIP), który rozwiązuje ten problem. Jeśli masz co najmniej jeden ciągły blok /24 CIDR, Bird może używać tych istniejących adresów IP do dostarczania, co oszczędza ci ból konieczności ponownego ich rozgrzewania. Jeśli możesz skorzystać z tej opcji, możesz pominąć sekcję tutaj dotyczącą rozgrzewania IP.

Jeśli czujesz, że jesteś gotowy, aby iść dalej, przejdź do „Making it happen”

Wykorzystanie Opcji #2 (przetwarzanie wstępne na miejscu):

Jeśli jednak jesteś w zespole Opcja #2, będziesz chciał dodać pewne zmiany konfiguracyjne do swojej wdrożenia. Najmniej bolesnym sposobem na migrację wybranych strumieni wiadomości z Momentum lub PMTA do Bird, nadal korzystając z SMTP injection z systemów generacyjnych, jest dodanie specjalnej trasy w konfiguracji.

For Momentum:

  1. Skonfiguruj wersję Momentum > 3.6.23. 

  2. Zainstaluj ważny certyfikat SSL i otwórz port wychodzący 587, aby Momentum mógł rozmawiać z Bird. Skonfiguruj domenę wychodzącą, aby móc kierować wiadomość przez Momentum do Bird. 

  3. Za pomocą poniższej konfiguracji każda wiadomość trafiająca w tę konfigurację zostanie skierowana na smtp.sparkpostmail.com z użyciem portu 587 i SMTP_Auth z zdefiniowaną tam nazwą użytkownika i hasłem.

    outbound_smtp_auth { }
    Keep_Message_Dicts_In_Memory = true
    Domain "smtp.sparkpostmail.com" {
      Remote_SMTP_Port = "587"
      Outbound_SMTP_AUTH_Type = "LOGIN"
      Outbound_SMTP_AUTH_user = "SMTP_Injection"
      Outbound_SMTP_AUTH_pass = "17258redacted8bd6cd7a8redacted8c22bce"
    }
  4. Skonfiguruj powiązania, które chcesz przekazywać przez MessageBird z TLS i kieruj je do domeny, którą zdefiniowałeś powyżej.

    Uwaga:
    TLS nie jest ściśle wymagany, ale jest silnie zalecany. Jeśli TLS nie jest możliwy z jakiegoś powodu, białe listowanie kluczy API jest również silnie zalecane.


    binding "CustomerA-Outbound" {
      Gateway = "smtp-demo.sparkpostelite.com"
      TLS = "required"
      TLS_Certificate = "/etc/pki/tls/certs/trymsys.net.crt"
      TLS_Key = "/etc/pki/tls/certs/trymsys.net.key"
      TLS_Ciphers = "DEFAULT"
    }

For PowerMTA:

  1. Skonfiguruj wersję PowerMTA > 4.5.0

  2. Zainstaluj ważny certyfikat SSL i otwórz port wychodzący 587, aby PowerMTA mógł rozmawiać z Bird.

  3. Skonfiguruj ścieżkę domeny wychodzącej, aby móc kierować wiadomość przez PowerMTA do Bird. Za pomocą poniższej konfiguracji każda wiadomość trafiająca w tę konfigurację zostanie skierowana na smtp.sparkpostmail.com z użyciem portu 587 i SMTP_Auth z zdefiniowaną tam nazwą użytkownika i hasłem.  W PowerMTA to także tutaj można ustawić TLS. Uwaga to również jest bardziej szczegółowo udokumentowane tutaj 

<domain sparkpost.rollup>
  use-unencrypted-plain-auth yes
  auth-username SMTP_Injection
  auth-password YourAPIKeygoesherewhenyougenerateit
  route smtp.sparkpostmail.com:587
  use-starttls yes
  require-starttls yes
  max-smtp-out 10
</domain>

4. Skonfiguruj VMTA, które chcesz przekazywać przez Bird z {sparkpost} konfiguracją rollup, którą zdefiniowałeś powyżej.

<virtual-mta SparkPostRelay>
  <domain *>
    queue-to {sparkpost}
  </domain>
</virtual-mta>

Po wprowadzeniu tych zmian konfiguracyjnych wszelkie wiadomości wysłane do wybranego „powiązania” lub „VMTA” powinny być automatycznie kierowane przez Bird do dostarczenia.  

Doprowadzenie do sukcesu

Kiedy zaczynasz tę drogę, nie popełniaj błędu myślenia, że to operacja na jedną noc. Zrobienie tego poprawnie zajmie trochę czasu i wymaga uwagi.

  1. Skonfiguruj swoje konto Bird i w pełni przetestuj je, korzystając z subkonta deweloperskiego, abyś mógł później odfiltrować ten ruch. Będziesz musiał to zrobić w obu opcjach, ponieważ będziesz potrzebował klucza API do hasła SMTP_Auth, w każdym przypadku.

  2. Jeśli korzystasz z injekcji SMTP, planuj dodać nagłówek X-MSYS-API, aby uwzględnić wszystkie niezbędne metadane i atrybuty wiadomości. Wszystkie nagłówki X powinny być przekształcone w metadane, a także powinieneś uwzględnić atrybuty ip_pool i campaign. Przykład jest dostępny tutaj

  3. Jeśli NIE używasz BYOIP, powinieneś upewnić się, że skonfigurujesz nieco inne domeny wysyłania do użytku z MessageBird, aby móc prowadzić oba środowiska równolegle tak długo, jak to potrzebne. Jeśli obecna domena wysyłania to mycompany.com, możesz skonfigurować sp.mycompany.com specjalnie dla dostarczania za pomocą Bird. Pozwoli to na stopniową i ostrożną migrację, bez kompromitacji żadnej z domen.

  4. Upewnij się, że posiadasz pełną zgodność domen i włączone funkcje bezpieczeństwa. W DNS skonfiguruj DKIM, SPF, DMARC, domeny odbijania i śledzenia, tak by wszystkie wyglądały, jakby należały do tej samej organizacji.

  5. Skonfiguruj Automatyczne Rozgrzewanie IP na twoich zdefiniowanych IP_Pools. Jeśli korzystasz z wcześniej wspomnianej opcji BYOIP, możesz pominąć krok rozgrzewania.

  6. Zacznij od jednego strumienia wiadomości i idź dalej. Podobnie jak przy rozgrzewaniu IP, nie chcesz robić tego od razu. Przekieruj najpierw kilkaset wiadomości, potem 10% wolumenu, następnie 20% na następny dzień i zwiększaj, aż przemieścisz cały wolumen. Jeśli jesteś ESP, wybierz klienta, z którym możesz współpracować, i przetestuj proces z ich opinią. Jeśli wszystko działa dobrze, przejdź do następnego. Jeśli napotkasz problemy, poświęć czas na ich naprawienie i wprowadzenie do procesu dla następnego klienta.

  7. Automatyzuj jak najwięcej za pomocą API. Poza zmianami w DNS, konfigurację SparkPost można w dużej mierze zautomatyzować za pomocą kilku wywołań API.

Zbieranie danych z Bird

MessageBird raportuje dostarczanie wiadomości w kanale webhooks lub w API zdarzeń wiadomości. Dostęp do zwykłych dzienników tekstowych Bird nie jest możliwy. Możesz przyciągać te dane z powrotem do swojego środowiska za pomocą kolektora webhooks lub okresowo wywołując API Events i przetwarzając dane. Zalecamy używanie webhooks i mamy kilka zaleceń, jak to zrobić prawidłowo. W najprostszej formie, kolektor webhook w PHP można wdrożyć w kilku linijkach kodu:

<?php
$verb = $_SERVER['REQUEST_METHOD'];
if ($verb === "POST") {
    $jsonStr = file_get_contents("php://input");
    http_response_code(200);
    $rnum = rand(1000, 9999);
    $timestamp = date("YmdHis") . $rnum;
    $filePath = './data/data_' . $timestamp . '.txt';
    // Handle duplicate filenames (edge case)
    if (file_exists($filePath)) {
        $baseName = basename($filePath, ".txt");
        $seq = 0;
        $ftail = substr($baseName, -2, 1);
        if ($ftail === "-") {
            $seq = (int)

Podczas eksperymentowania możesz je wypróbować z darmowymi kolektorami, takimi jak http://webhook.site/.

Po zebraniu wszystkich danych z webhook, możesz wczytać je do magazynu danych do dalszego przetwarzania. Istnieją również sposoby przesyłania Webhooks przez usługi takie jak StitchData i Segment.

Te same informacje są dostępne w Events API, jeśli potrzebujesz ODBIERAĆ dane i nie możesz zaakceptować danych PUSH. Oto przykładowe wywołanie Event API:
GET https://api.sparkpost.com/api/v1/events/message?/

recipients=recipient@example.com&templates=my-template&events

To API jest w pełni udokumentowane z przykładami tutaj:  https://developers.sparkpost.com/api/events/#events-get-search-for-message-events

Jeśli naprawdę potrzebujesz, aby dane zdarzeń były w formie, która wygląda jak logowanie PMTA lub Momentum, jest to również możliwe, jeśli zastosujesz dodatkowy kod kondycjonujący. Dobrą wiadomością jest, że istnieje kilka przykładów, z których już można skorzystać.

Podsumowanie

Upewnij się, że rozmawiasz z zespołem ds. sprzedaży i zarządzania sukcesem. Robiliśmy to wcześniej i możemy ci pomóc przejść przez to szybko i opłacalnie.

  1. Dowiedz się, czy jesteś w grupie nr 1 (w pełni zdolny do przeniesienia z systemu On-Prem) czy w grupie nr 2 (nadal potrzebujesz części On-Prem MTA).

  2. Zarejestruj się na bezpłatne konto testowe, aby ocenić szczegóły integracji.

  3. Zdecyduj się na metody wtrysku SMTP lub REST API.

  4. Jeśli używasz wstrzyknięcia SMTP, dowiedz się, jak przenieść dane nagłówka i atrybuty wiadomości do nagłówka X-MSYS-API.

  5. Potwierdź, czy możesz korzystać z naszego procesu BYOIP.

  6. Zaktualizuj swój DNS o nowe domeny, jeśli to konieczne.

  7. Zbuduj małą próbkę, aby przetestować swoją migrację. Może być konieczne dostosowanie konfiguracji.

  8. Zwiększaj wolumen, aż cały ruch zostanie przeniesiony.

  9. Jeśli pasujesz do grupy nr 1, możesz ostatecznie wyłączyć swoje systemy on-prem MTA po zakończeniu migracji całego ruchu.

Przy planowaniu zmian DNS dla systemów e-mail o dużym wolumenie, bądź świadomy potencjalnych wyzwań skalowania DNS AWS, które mogą wpłynąć na wydajność dostarczania poczty elektronicznej na dużą skalę.

Połączmy Cię z ekspertem Bird.
Zobacz pełną moc Bird w 30 minut.

Przesyłając, zgadzasz się, że Bird może kontaktować się z Tobą w sprawie naszych produktów i usług.

Możesz zrezygnować z subskrypcji w dowolnym momencie. Zobacz Privacy Statement firmy Bird, aby uzyskać szczegóły dotyczące przetwarzania danych.

Company

Biuletyn

Bądź na bieżąco z Bird dzięki cotygodniowym aktualizacjom do Twojej skrzynki odbiorczej.

Połączmy Cię z ekspertem Bird.
Zobacz pełną moc Bird w 30 minut.

Przesyłając, zgadzasz się, że Bird może kontaktować się z Tobą w sprawie naszych produktów i usług.

Możesz zrezygnować z subskrypcji w dowolnym momencie. Zobacz Privacy Statement firmy Bird, aby uzyskać szczegóły dotyczące przetwarzania danych.

Company

Biuletyn

Bądź na bieżąco z Bird dzięki cotygodniowym aktualizacjom do Twojej skrzynki odbiorczej.

Połączmy Cię z ekspertem Bird.
Zobacz pełną moc Bird w 30 minut.

Przesyłając, zgadzasz się, że Bird może kontaktować się z Tobą w sprawie naszych produktów i usług.

Możesz zrezygnować z subskrypcji w dowolnym momencie. Zobacz Privacy Statement firmy Bird, aby uzyskać szczegóły dotyczące przetwarzania danych.

R

Reach

G

Grow

M

Manage

A

Automate

Company

Biuletyn

Bądź na bieżąco z Bird dzięki cotygodniowym aktualizacjom do Twojej skrzynki odbiorczej.