Page MenuHomePhabricator

Configure a whitelist of remote addresses for Postmark inbound webhooks
ClosedPublic

Authored by epriestley on Feb 8 2018, 3:03 PM.
Tags
None
Referenced Files
F14006554: D19025.diff
Mon, Oct 28, 12:43 PM
F13981418: D19025.id45620.diff
Sat, Oct 19, 4:24 PM
F13981109: D19025.id45621.diff
Sat, Oct 19, 2:18 PM
Unknown Object (File)
Oct 9 2024, 8:45 AM
Unknown Object (File)
Sep 30 2024, 2:40 AM
Unknown Object (File)
Sep 29 2024, 11:59 AM
Unknown Object (File)
Sep 26 2024, 9:36 AM
Unknown Object (File)
Sep 21 2024, 6:14 AM
Subscribers
None

Details

Summary

Ref T13053. Postmark support recommends testing requests against a whitelist of known remote addresses to determine request authenticity. Today, the list can be found here:

https://postmarkapp.com/support/article/800-ips-for-firewalls

This is potentially less robust than, e.g., HMAC verification, since they may need to add new datacenters or support IPv6 or something. Users might also have weird network topologies where everything is proxied, and this makes testing/simulating more difficult.

Allow users to configure the list so that they don't need to hack things apart if Postmark adds a new datacenter or remote addresses are unreliable for some other reason, but ship with safe defaults for today.

Test Plan

Tried to make local requests, got kicked out. Added 0.0.0.0/0 to the list, stopped getting kicked out.

I don't have a convenient way to route real Postmark traffic to my development laptop with an authentic remote address so I haven't verified that the published remote address is legitimate, but I'll vet that in production when I go through all the other mailers.

Diff Detail

Repository
rP Phabricator
Branch
mail1
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 19414
Build 26254: Run Core Tests
Build 26253: arc lint + arc unit

Event Timeline

  • Also mention this whitelist in the "Inbound Mail" documentation.
This revision was not accepted when it landed; it landed in state Needs Review.Feb 8 2018, 4:23 PM
This revision was automatically updated to reflect the committed changes.