SlideShare a Scribd company logo
1 of 15
Download to read offline
PowerMTA Integration
Experiences and Solutions
Postmastery and PowerMTA
PowerMTA as building block
SMTP SMTP
configuration
accounting
Integration challenges
Email submission
● SMTP
○ Clients: JavaMail, PHPMailer, MailKit
● Submission API
○ Library: Perl, Java, C++
● Pickup folder
○ Local application
● Transmission API (interim)
○ HTTP, JSON
○ Prebuilt message
Mailmerge support
From: "Customer Service" [*from]
To: "[FName]" [*to]
Date: [*date]
Subject: Travel Plans
Dear [FName],
You are flying out of [Airport] given that it is
closest to your location
in [City], [State].
Email generator flow
merging encoding submission
RFC5322text+html
github.com/postmastery/pmtaemailapi
{
"from": {"name": "Jérôme", "address": "jerome@postmastery.net"},
"to": {"name": "Maarten", "address": "maarten@postmastery.net"},
"subject": "Pay for lunch",
"text": "Hi Maarten, can you pay me €50 for lunch.",
"html": "..."
}
x-sender: jerome@postmastery.net
x-receiver: maarten@postmastery.net
Date: Wed, 11 Sep 2019 12:51:40 +0200
From: =?utf-8?q?J=C3=A9r=C3=B4me?= <jerome@postmastery.net>
To: "Maarten" <maarten@postmastery.net>
Subject: Pay for lunch
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="e0508c573add4451552906243fc9673f43978e67fc3d8b0d44c7bdb693ff"
--e0508c573add4451552906243fc9673f43978e67fc3d8b0d44c7bdb693ff
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=utf-8
Hi Maarten, can you pay me =E2=82=AC50 for lunch.
--e0508c573add4451552906243fc9673f43978e67fc3d8b0d44c7bdb693ff
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=utf-8
...
--e0508c573add4451552906243fc9673f43978e67fc3d8b0d44c7bdb693ff--
JSON over HTTP
Inbound email processing
● Bounce processor
● Feedback loop processor
● Delivery to file
● Pipe to process
List-Unsubscribe with mailto
relay-domain unsubscribe.example.com
<domain unsubscribe.example.com>
type pipe
command "/opt/pmta/unsubmail -from=$from -to=$to -pat=(d+)_(d+)_(d+)_([a-f0-9]+)
-url=https://www.example.com/unsubscribe?q=$$1&c=$$3&b=$$2&hash=$$4"
</domain>
List-Unsubscribe: <mailto:229_3430_2346761_618e1a4097f3cf26a8b23f89b9848e5@unsubscribe.example.com>,
<https://www.example.com/unsubscribe?q=229&c=2346761&b=3430&hash=618e1a4097f3cf26a8b23f89b9848e5>
Processing accounting data
● Log “tailing”
○ Logstash, Beats, Fluentd, NXLog
○ Integrations: Splunk, Elastic, Kafka
● Pickup folder
○ <acct-file>.move-to, <acct-file>.move-interval
○ Integrations: Interspire
● Pipe to process
○ <acct-file |/path/to/executable>
○ Integrations: Ongage, Mailwizz, Redis
Accounting pipes
delivery
OS pipe
accounting
bounded buffersynchronisation
Accounting webhook
<acct-file |/opt/pmta/pmtawebhook -url=...>
records b, rb
record-fields b timeLogged,rcpt,dsnAction,dsnStatus,dsnDiag,bounceCat
record-fields rb timeLogged,rcpt,dsnAction,dsnStatus,dsnDiag,bounceCat
</acct-file>
[{"type":"b", "timeLogged":"1382377561", "rcpt": "nobody@outlook.com", "dsnAction":"failed",
"dsnStatus":"5.0.0 (undefined status)", "dsnDiag":"smtp;550 Requested action not taken: mailbox
unavailable", "bounceCat":"bad-mailbox"},...]
JSON over HTTPS
PowerMTA 5.X?
Email API SMTP
Configuration API
Event webhooks
15
Dank Je
Thank You

More Related Content

What's hot

Performance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedPerformance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedBrendan Gregg
 
Shell Script Disk Usage Report and E-Mail Current Threshold Status
Shell Script  Disk Usage Report and E-Mail Current Threshold StatusShell Script  Disk Usage Report and E-Mail Current Threshold Status
Shell Script Disk Usage Report and E-Mail Current Threshold StatusVCP Muthukrishna
 
pg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLpg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLMark Wong
 
엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf한 경만
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machineAlexei Starovoitov
 
Built in physical and logical replication in postgresql-Firat Gulec
Built in physical and logical replication in postgresql-Firat GulecBuilt in physical and logical replication in postgresql-Firat Gulec
Built in physical and logical replication in postgresql-Firat GulecFIRAT GULEC
 
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-AreaOrange Tsai
 
Boost UDP Transaction Performance
Boost UDP Transaction PerformanceBoost UDP Transaction Performance
Boost UDP Transaction PerformanceLF Events
 
eBPF Perf Tools 2019
eBPF Perf Tools 2019eBPF Perf Tools 2019
eBPF Perf Tools 2019Brendan Gregg
 
Cassandra nice use cases and worst anti patterns
Cassandra nice use cases and worst anti patternsCassandra nice use cases and worst anti patterns
Cassandra nice use cases and worst anti patternsDuyhai Doan
 
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019CLEYSSON LIMA
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and moreBrendan Gregg
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
 
Poptrie: A Compressed Trie with Population Count for Fast and Scalable Softwa...
Poptrie: A Compressed Trie with Population Count for Fast and Scalable Softwa...Poptrie: A Compressed Trie with Population Count for Fast and Scalable Softwa...
Poptrie: A Compressed Trie with Population Count for Fast and Scalable Softwa...Hirochika Asai
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PGConf APAC
 
IntelON 2021 Processor Benchmarking
IntelON 2021 Processor BenchmarkingIntelON 2021 Processor Benchmarking
IntelON 2021 Processor BenchmarkingBrendan Gregg
 
Linux Systems Performance 2016
Linux Systems Performance 2016Linux Systems Performance 2016
Linux Systems Performance 2016Brendan Gregg
 
OpenWRT guide and memo
OpenWRT guide and memoOpenWRT guide and memo
OpenWRT guide and memo家榮 吳
 

What's hot (20)

Performance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedPerformance Wins with BPF: Getting Started
Performance Wins with BPF: Getting Started
 
Shell Script Disk Usage Report and E-Mail Current Threshold Status
Shell Script  Disk Usage Report and E-Mail Current Threshold StatusShell Script  Disk Usage Report and E-Mail Current Threshold Status
Shell Script Disk Usage Report and E-Mail Current Threshold Status
 
pg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLpg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQL
 
엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machine
 
Built in physical and logical replication in postgresql-Firat Gulec
Built in physical and logical replication in postgresql-Firat GulecBuilt in physical and logical replication in postgresql-Firat Gulec
Built in physical and logical replication in postgresql-Firat Gulec
 
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area
 
Boost UDP Transaction Performance
Boost UDP Transaction PerformanceBoost UDP Transaction Performance
Boost UDP Transaction Performance
 
eBPF Perf Tools 2019
eBPF Perf Tools 2019eBPF Perf Tools 2019
eBPF Perf Tools 2019
 
Cassandra nice use cases and worst anti patterns
Cassandra nice use cases and worst anti patternsCassandra nice use cases and worst anti patterns
Cassandra nice use cases and worst anti patterns
 
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
Gerenciamento de Backup e Recovery com Barman PGConfBrasil2019
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
 
Introduction to Perf
Introduction to PerfIntroduction to Perf
Introduction to Perf
 
Poptrie: A Compressed Trie with Population Count for Fast and Scalable Softwa...
Poptrie: A Compressed Trie with Population Count for Fast and Scalable Softwa...Poptrie: A Compressed Trie with Population Count for Fast and Scalable Softwa...
Poptrie: A Compressed Trie with Population Count for Fast and Scalable Softwa...
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
 
Introduction to DPDK RIB library
Introduction to DPDK RIB libraryIntroduction to DPDK RIB library
Introduction to DPDK RIB library
 
IntelON 2021 Processor Benchmarking
IntelON 2021 Processor BenchmarkingIntelON 2021 Processor Benchmarking
IntelON 2021 Processor Benchmarking
 
Linux Systems Performance 2016
Linux Systems Performance 2016Linux Systems Performance 2016
Linux Systems Performance 2016
 
OpenWRT guide and memo
OpenWRT guide and memoOpenWRT guide and memo
OpenWRT guide and memo
 

More from SparkPost

Unlocking Email’s Hidden Opportunities to Create a Competitive Advantage
Unlocking Email’s Hidden Opportunities  to Create a Competitive AdvantageUnlocking Email’s Hidden Opportunities  to Create a Competitive Advantage
Unlocking Email’s Hidden Opportunities to Create a Competitive AdvantageSparkPost
 
SparkPost Celebrates International Women's Day 2020
SparkPost Celebrates International Women's Day 2020SparkPost Celebrates International Women's Day 2020
SparkPost Celebrates International Women's Day 2020SparkPost
 
PMTA Success Story - J2 Martech
PMTA Success Story - J2 MartechPMTA Success Story - J2 Martech
PMTA Success Story - J2 MartechSparkPost
 
How Email and Your Culture Can Help Change the World
How Email and Your Culture Can Help Change the WorldHow Email and Your Culture Can Help Change the World
How Email and Your Culture Can Help Change the WorldSparkPost
 
Brave New World: Everything you Wanted to Know About Deliverability Updates
Brave New World: Everything you Wanted to Know About Deliverability UpdatesBrave New World: Everything you Wanted to Know About Deliverability Updates
Brave New World: Everything you Wanted to Know About Deliverability UpdatesSparkPost
 
Get Ahead of the Game! Our Journey to Rebranding and Success
Get Ahead of the Game! Our Journey to Rebranding and SuccessGet Ahead of the Game! Our Journey to Rebranding and Success
Get Ahead of the Game! Our Journey to Rebranding and SuccessSparkPost
 
Beyond the Norm: Email and the Innovation Ethos
Beyond the Norm: Email and the Innovation EthosBeyond the Norm: Email and the Innovation Ethos
Beyond the Norm: Email and the Innovation EthosSparkPost
 
New features in PMTA 5.0
New features in PMTA 5.0New features in PMTA 5.0
New features in PMTA 5.0SparkPost
 
Product Roadmap 2019 PMTA Summit
Product Roadmap 2019 PMTA SummitProduct Roadmap 2019 PMTA Summit
Product Roadmap 2019 PMTA SummitSparkPost
 
At the Wheel: An Evolution Story for Email Strategists (and Cyclists)
At the Wheel: An Evolution Story for Email Strategists (and Cyclists)At the Wheel: An Evolution Story for Email Strategists (and Cyclists)
At the Wheel: An Evolution Story for Email Strategists (and Cyclists)SparkPost
 
Webinar: Retail Banking - Optimizing the Customer Deposit Lifecycle
Webinar: Retail Banking - Optimizing the Customer Deposit LifecycleWebinar: Retail Banking - Optimizing the Customer Deposit Lifecycle
Webinar: Retail Banking - Optimizing the Customer Deposit LifecycleSparkPost
 
SparkPost Celebrates Pride
SparkPost Celebrates PrideSparkPost Celebrates Pride
SparkPost Celebrates PrideSparkPost
 
How LendingTree is Growing Rapidly with Email and Customer Engagement
How LendingTree is Growing Rapidly with Email and Customer Engagement How LendingTree is Growing Rapidly with Email and Customer Engagement
How LendingTree is Growing Rapidly with Email and Customer Engagement SparkPost
 
On-Premises and Cloud - Putting the Pieces Together
On-Premises and Cloud - Putting the Pieces TogetherOn-Premises and Cloud - Putting the Pieces Together
On-Premises and Cloud - Putting the Pieces TogetherSparkPost
 
Trends and Insights for Interactive Email & Google AMP for Email
Trends and Insights for Interactive Email & Google AMP for EmailTrends and Insights for Interactive Email & Google AMP for Email
Trends and Insights for Interactive Email & Google AMP for EmailSparkPost
 
Scaling Your Product with Key Growth Surfaces
Scaling Your Product with Key Growth SurfacesScaling Your Product with Key Growth Surfaces
Scaling Your Product with Key Growth SurfacesSparkPost
 
Segmenting Your Way to Smarter Sending
Segmenting Your Way to Smarter SendingSegmenting Your Way to Smarter Sending
Segmenting Your Way to Smarter SendingSparkPost
 
State of Transactional Email 2018 (Benchmark report)
State of Transactional Email 2018 (Benchmark report)State of Transactional Email 2018 (Benchmark report)
State of Transactional Email 2018 (Benchmark report)SparkPost
 
GDPR Affects Email Worldwide
GDPR Affects Email WorldwideGDPR Affects Email Worldwide
GDPR Affects Email WorldwideSparkPost
 
Using Microservices to 
Build an API That Lasts
Using Microservices to 
Build an API That LastsUsing Microservices to 
Build an API That Lasts
Using Microservices to 
Build an API That LastsSparkPost
 

More from SparkPost (20)

Unlocking Email’s Hidden Opportunities to Create a Competitive Advantage
Unlocking Email’s Hidden Opportunities  to Create a Competitive AdvantageUnlocking Email’s Hidden Opportunities  to Create a Competitive Advantage
Unlocking Email’s Hidden Opportunities to Create a Competitive Advantage
 
SparkPost Celebrates International Women's Day 2020
SparkPost Celebrates International Women's Day 2020SparkPost Celebrates International Women's Day 2020
SparkPost Celebrates International Women's Day 2020
 
PMTA Success Story - J2 Martech
PMTA Success Story - J2 MartechPMTA Success Story - J2 Martech
PMTA Success Story - J2 Martech
 
How Email and Your Culture Can Help Change the World
How Email and Your Culture Can Help Change the WorldHow Email and Your Culture Can Help Change the World
How Email and Your Culture Can Help Change the World
 
Brave New World: Everything you Wanted to Know About Deliverability Updates
Brave New World: Everything you Wanted to Know About Deliverability UpdatesBrave New World: Everything you Wanted to Know About Deliverability Updates
Brave New World: Everything you Wanted to Know About Deliverability Updates
 
Get Ahead of the Game! Our Journey to Rebranding and Success
Get Ahead of the Game! Our Journey to Rebranding and SuccessGet Ahead of the Game! Our Journey to Rebranding and Success
Get Ahead of the Game! Our Journey to Rebranding and Success
 
Beyond the Norm: Email and the Innovation Ethos
Beyond the Norm: Email and the Innovation EthosBeyond the Norm: Email and the Innovation Ethos
Beyond the Norm: Email and the Innovation Ethos
 
New features in PMTA 5.0
New features in PMTA 5.0New features in PMTA 5.0
New features in PMTA 5.0
 
Product Roadmap 2019 PMTA Summit
Product Roadmap 2019 PMTA SummitProduct Roadmap 2019 PMTA Summit
Product Roadmap 2019 PMTA Summit
 
At the Wheel: An Evolution Story for Email Strategists (and Cyclists)
At the Wheel: An Evolution Story for Email Strategists (and Cyclists)At the Wheel: An Evolution Story for Email Strategists (and Cyclists)
At the Wheel: An Evolution Story for Email Strategists (and Cyclists)
 
Webinar: Retail Banking - Optimizing the Customer Deposit Lifecycle
Webinar: Retail Banking - Optimizing the Customer Deposit LifecycleWebinar: Retail Banking - Optimizing the Customer Deposit Lifecycle
Webinar: Retail Banking - Optimizing the Customer Deposit Lifecycle
 
SparkPost Celebrates Pride
SparkPost Celebrates PrideSparkPost Celebrates Pride
SparkPost Celebrates Pride
 
How LendingTree is Growing Rapidly with Email and Customer Engagement
How LendingTree is Growing Rapidly with Email and Customer Engagement How LendingTree is Growing Rapidly with Email and Customer Engagement
How LendingTree is Growing Rapidly with Email and Customer Engagement
 
On-Premises and Cloud - Putting the Pieces Together
On-Premises and Cloud - Putting the Pieces TogetherOn-Premises and Cloud - Putting the Pieces Together
On-Premises and Cloud - Putting the Pieces Together
 
Trends and Insights for Interactive Email & Google AMP for Email
Trends and Insights for Interactive Email & Google AMP for EmailTrends and Insights for Interactive Email & Google AMP for Email
Trends and Insights for Interactive Email & Google AMP for Email
 
Scaling Your Product with Key Growth Surfaces
Scaling Your Product with Key Growth SurfacesScaling Your Product with Key Growth Surfaces
Scaling Your Product with Key Growth Surfaces
 
Segmenting Your Way to Smarter Sending
Segmenting Your Way to Smarter SendingSegmenting Your Way to Smarter Sending
Segmenting Your Way to Smarter Sending
 
State of Transactional Email 2018 (Benchmark report)
State of Transactional Email 2018 (Benchmark report)State of Transactional Email 2018 (Benchmark report)
State of Transactional Email 2018 (Benchmark report)
 
GDPR Affects Email Worldwide
GDPR Affects Email WorldwideGDPR Affects Email Worldwide
GDPR Affects Email Worldwide
 
Using Microservices to 
Build an API That Lasts
Using Microservices to 
Build an API That LastsUsing Microservices to 
Build an API That Lasts
Using Microservices to 
Build an API That Lasts
 

Recently uploaded

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Recently uploaded (20)

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 

PowerMTA Integration Experiences and Solutions

  • 3. PowerMTA as building block SMTP SMTP configuration accounting
  • 5. Email submission ● SMTP ○ Clients: JavaMail, PHPMailer, MailKit ● Submission API ○ Library: Perl, Java, C++ ● Pickup folder ○ Local application ● Transmission API (interim) ○ HTTP, JSON ○ Prebuilt message
  • 6. Mailmerge support From: "Customer Service" [*from] To: "[FName]" [*to] Date: [*date] Subject: Travel Plans Dear [FName], You are flying out of [Airport] given that it is closest to your location in [City], [State].
  • 7. Email generator flow merging encoding submission RFC5322text+html
  • 8. github.com/postmastery/pmtaemailapi { "from": {"name": "Jérôme", "address": "jerome@postmastery.net"}, "to": {"name": "Maarten", "address": "maarten@postmastery.net"}, "subject": "Pay for lunch", "text": "Hi Maarten, can you pay me €50 for lunch.", "html": "..." } x-sender: jerome@postmastery.net x-receiver: maarten@postmastery.net Date: Wed, 11 Sep 2019 12:51:40 +0200 From: =?utf-8?q?J=C3=A9r=C3=B4me?= <jerome@postmastery.net> To: "Maarten" <maarten@postmastery.net> Subject: Pay for lunch MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="e0508c573add4451552906243fc9673f43978e67fc3d8b0d44c7bdb693ff" --e0508c573add4451552906243fc9673f43978e67fc3d8b0d44c7bdb693ff Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi Maarten, can you pay me =E2=82=AC50 for lunch. --e0508c573add4451552906243fc9673f43978e67fc3d8b0d44c7bdb693ff Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 ... --e0508c573add4451552906243fc9673f43978e67fc3d8b0d44c7bdb693ff-- JSON over HTTP
  • 9. Inbound email processing ● Bounce processor ● Feedback loop processor ● Delivery to file ● Pipe to process
  • 10. List-Unsubscribe with mailto relay-domain unsubscribe.example.com <domain unsubscribe.example.com> type pipe command "/opt/pmta/unsubmail -from=$from -to=$to -pat=(d+)_(d+)_(d+)_([a-f0-9]+) -url=https://www.example.com/unsubscribe?q=$$1&c=$$3&b=$$2&hash=$$4" </domain> List-Unsubscribe: <mailto:229_3430_2346761_618e1a4097f3cf26a8b23f89b9848e5@unsubscribe.example.com>, <https://www.example.com/unsubscribe?q=229&c=2346761&b=3430&hash=618e1a4097f3cf26a8b23f89b9848e5>
  • 11. Processing accounting data ● Log “tailing” ○ Logstash, Beats, Fluentd, NXLog ○ Integrations: Splunk, Elastic, Kafka ● Pickup folder ○ <acct-file>.move-to, <acct-file>.move-interval ○ Integrations: Interspire ● Pipe to process ○ <acct-file |/path/to/executable> ○ Integrations: Ongage, Mailwizz, Redis
  • 13. Accounting webhook <acct-file |/opt/pmta/pmtawebhook -url=...> records b, rb record-fields b timeLogged,rcpt,dsnAction,dsnStatus,dsnDiag,bounceCat record-fields rb timeLogged,rcpt,dsnAction,dsnStatus,dsnDiag,bounceCat </acct-file> [{"type":"b", "timeLogged":"1382377561", "rcpt": "nobody@outlook.com", "dsnAction":"failed", "dsnStatus":"5.0.0 (undefined status)", "dsnDiag":"smtp;550 Requested action not taken: mailbox unavailable", "bounceCat":"bad-mailbox"},...] JSON over HTTPS
  • 14. PowerMTA 5.X? Email API SMTP Configuration API Event webhooks