Globalcriticalset by the Hub
Declares the address and port on which the node listens for SMTP, and can bind a named source to them. There can be several listeners — one per address and port; 0.0.0.0 may be repeated, opening several ports on all addresses at once, and a range in CIDR notation is accepted instead of an address.
If you do not declare any, the node brings up a listener on its own — on 0.0.0.0:25. That is convenient on first launch and dangerous later: a listener on all addresses lives on where everyone has already forgotten about it.
The appearance of this line disables two old ones. The engine stops noticing smtp-ip and smtp-port altogether as soon as at least one listener is declared.
Binding a source to a listener gives a choice of sending address by entry point. The submitter chooses where to connect and thereby chooses which address its mail will leave from — without being able to set any headers. The manual warns right there: a relaying permission on such a source means that anyone who can reach the address will be able to relay — and that is an open relay.
The submission port is not 25. On a sending node, port 25 is needed for receiving bounces and complaints, and keeping submission on it too means mixing two different doors. We separate them: 2525 for platforms, 25 for incoming reports.
The address in the line is not the sending address. It says where the node listens; which address it sends from is decided by smtp-source-host in the sending address block. Confusing the two is common on a node with several addresses.
source= binding is rarely needed and dangerous. It is appropriate when the entry point itself must choose the sending address. Without a pressing need it is better to choose the source by the submitter’s address — then the relaying permission does not go to anyone who can reach the port.
# campaign submission — a separate port smtp-listener 0/0:2525# receiving complaints and asynchronous bounces — port 25 smtp-listener 0/0:25
what people get wrong and how it ends4 mistakes▶
§ 3.3.1.27
§ 3.3.1.27
our experience
our experience
4 relations
total-max-smtp-inGlobalThe ceiling on incoming connections that this listener accepts. inference
always-allow-relayingGlobalThe listener decides where the node can be reached from; the permission decides what those who reach it are allowed to do. § 3.3.1.27run-as-rootGlobalIt determines which ports are available to the listener: not root — only above 1024. § 2.2.1
Who can submit mail and on what termsThe configuration block where the mechanism lives. § 3.3.1.27
smtp-ipGlobalThe supported form: address and port together, and there can be several such lines. § 3.3.1.27smtp-portGlobalThe supported form: address and port together, and there can be several lines. § 3.3.1.27How the node selects a source and combines its settingsThe source= parameter on a listener selects a named block and cancels address matching altogether. § 3.3.7smtp-service<source>The listener opens the port, and this directive decides whether to accept mail on it from the source. § 3.3.1.27source<smtp-user>The second reference to a named block: there the listener chooses it, here the account does. § 3.3.1.27await-slot<smtp-listener>The line applies to connections accepted on this listener’s address. § 3.3.17.1
ss -lntp | grep pmtad
3 articles
◇Who is allowed to submit mail and for whom to accept itOut of the box, the node accepts submission only from the machine itself; two different questions — “who can send through us” and “for whose addresses we accept mail” — are answered by different directives.◇Headers the sender uses to control deliverySix control headers let the submitting side choose a stream, tag a message with a job, set signing options and the key, the envelope identifier and the schedule; each is allowed separately and per source.◇The load balancer header at the entranceThe node reads the PROXY header at the start of an incoming connection and treats the address from it as the source; this works for both kinds of entry point.