POSTDROP(1)
π POSTDROP(1) β the manual page, but make it make sense
okay bestie, welcome to the General Commands Manual, section 1, and today's main character is postdrop. yes that one. the little helper that everybody depends on and nobody thanks. let's get into it π
β¨ NAME β¨
postdrop β the Postfix mail posting utility π
β¨ SYNOPSIS β¨
postdrop [-rv] [-c config_dir]
look at her. short. efficient. iconic. no notes. π
β¨ DESCRIPTION β¨
so like, the postdrop(1) command creates a file in the maildrop directory and then copies its standard input to that file. that's the whole job. it's not glamorous but it's essential, and honestly the way she just does it without complaining? main character energy.
here are the options, and yes, we're doing all of them, no skips:
-c config_dirβ themain.cfconfiguration file lives in the directory you name here, instead of the default configuration directory. also peep the MAIL_CONFIG environment setting further down π-rβ use a Postfix-internal protocol to read the message from standard input, and to report status info on standard output. and heads up: this is currently the only supported method. so like, there's no plan B, bestie.-vβ enable verbose logging, for debugging purposes. stack multiple-voptions and the software gets increasingly verbose β more-v, more yapping. but as of Postfix 2.3, this option is available for the super-user only. sorry to the rest of y'all π
π‘οΈ SECURITY π‘οΈ
this command is designed to run with set-group ID privileges, so that it can write to the maildrop queue directory and so that it can connect to Postfix daemon processes. that's the whole reason it gets to be special like that. it's giving trusted insider. π
π DIAGNOSTICS π
fatal errors include: malformed input, I/O error, and out of memory. when those happen, the problems get logged to syslogd(8) or postlogd(8) and to the standard error stream β so like, double the receipts.
also, super important: when the input is incomplete, or when the process receives a HUP, INT, QUIT or TERM signal, the queue file is deleted. gone. not recoverable. she said "if it's not a full message it's not my problem." π
π± ENVIRONMENT π±
MAIL_CONFIGβ directory with themain.cffile. and now the serious part: in order to avoid exploitation of set-group ID privileges, a non-default directory is allowed only if:- The name is listed in the default
main.cffile with thealternate_config_directoriesormulti_instance_directoriesconfiguration parameter. - The command is invoked by the super-user.
- The name is listed in the default
both of those conditions, not one. no cap. π₯
βοΈ CONFIGURATION PARAMETERS βοΈ
the following main.cf parameters are especially relevant to this program. the text below is only a parameter summary β see postconf(5) for more details, including examples. (postconf(5) really said "I'll give you the full essay," and this page said "I'll give you the bullet points."):
alternate_config_directories(default: empty) β a list of non-default Postfix configuration directories that may be specified with-c config_directoryon the command line (in the case ofsendmail(1), with the-Coption), or via theMAIL_CONFIGenvironment parameter.config_directory(default: seepostconf -doutput) β the default location of the Postfixmain.cfandmaster.cfconfiguration files.import_environment(default: seepostconf -doutput) β the list of environment variables that a privileged Postfix process will import from a non-Postfix parent process, orname=valueenvironment overrides.queue_directory(default: seepostconf -doutput) β the location of the Postfix top-level queue directory.syslog_facility(default:mail) β the syslog facility of Postfix logging.syslog_name(default: seepostconf -doutput) β a prefix that is prepended to the process name in syslog records, so that, for example,smtpdbecomesprefix/smtpd.trigger_timeout(default:10s) β the time limit for sending a trigger to a Postfix daemon (for example, thepickup(8)orqmgr(8)daemon).
Available in Postfix version 2.2 and later:
authorized_submit_users(default:static:anyone) β list of users who are authorized to submit mail with thesendmail(1)command (and with the privilegedpostdrop(1)helper command).
Available in Postfix version 3.6 and later:
local_login_sender_maps(default:static:*) β a list of lookup tables that are searched by the UNIX login name, and that return a list of allowed envelope sender patterns separated by space or comma.empty_address_local_login_sender_maps_lookup_key(default:<>) β the lookup key to be used inlocal_login_sender_mapstables, instead of the null sender address.recipient_delimiter(default: empty) β the set of characters that can separate an email address localpart, user name, or a.forwardfile name from its extension.
π FILES π
/var/spool/postfix/maildropβ the maildrop queue πΈ
π SEE ALSO π
sendmail(1), compatibility interfacepostconf(5), configuration parameterspostlogd(8), Postfix loggingsyslogd(8), system logging
π LICENSE π
The Secure Mailer license must be distributed with this software. (not optional, bestie, it literally says must.)
π AUTHOR(S) π
Wietse Venema IBM T.J. Watson Research P.O. Box 704 Yorktown Heights, NY 10598, USA
Wietse Venema Google, Inc. 111 8th Avenue New York, NY 10011, USA
aaaand that's the whole page π«Ά this was section 1 of the General Commands Manual, and it signs off as POSTDROP(1) β same name up top, same name at the bottom, symmetrical queen. thanks for reading the whole thing, bestie, ur officially smarter than everyone in the group chat. mwah β¨ππ¦
π¦ where this page comes from
- alpine 3.24: postfix-doc 3.11.7-r0 Β· IPL-1.0 EPL-2.0
- arch rolling: postfix 3.11.7-1 Β· EPL-2.0 OR IPL-1.0 AND BSD-4-Clause-UC
- nixos 26.05: postfix 3.11.7
- nixpkgs unstable: postfix 3.11.7
- ubuntu stonking: postfix 3.11.7-1ubuntu2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms