A submission method with neither a connection nor a protocol: the message is written as a file into the designated directory, from which the engine picks it up.
The envelope is passed in special headers at the start of the file. First comes x-sender — the sender, on one line. After it x-receiver, one line per recipient. Optionally — x-envid and x-job. The requirement is strict: addresses only, without names and without angle brackets.
There is also x-sender-override: if present, its content overrides the sender from x-sender. It was invented for programs that do not let you set the sender but allow adding an arbitrary header.
No message processing takes place. The manual says it plainly: apart from reading and removing these headers, the engine does nothing with the message — formatting is entirely up to you.
A recipient named only in x-receiver but not in the message headers gets a blind copy — that is how a hidden mailing is done with this method.
The manual advises no more than 5,000 recipients per file.
And a performance caveat: creating the file directly in the directory is possible but less efficient — the engine repeatedly tries to take exclusive possession of it while writing is not finished. It is better to assemble the file elsewhere and move it.
The second half is assembling the file directly in the directory. The engine will start trying to take it without waiting for the write to finish, and will keep trying again and again. It works, but it costs more than moving a finished file.
The method would be useful where the submitting side cannot do SMTP or must not go over the network. For the fleet this is not our case: submission goes from the Hub itself over the network, and a login is needed there anyway.
# the envelope — the first lines of the file, then an ordinary message x-sender: me@over.here x-receiver: you@over.therex-receiver: someone.else@some.other.place x-job: sale-2026-08 From: Myself <me@over.here> Subject: I love it Hey, did you know that ...
what people get wrong and how it ends3 mistakes▶
§ 11.20
§ 11.20
§ 11.20
3 relations
grep -n 'pickup' /etc/pmta/config ls -l /opt/pickup/new /opt/pickup/badfiles 2>/dev/null
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.