QMQPD(8postfix)

πŸ“¦
version 3.8.6 Β· 2 versions
, in debian bookworm, ubuntu noble

πŸ’– NAME πŸ’–

qmqpd β€” the Postfix QMQP server. that's it, that's the name, short and iconic ✨


πŸŽ€ SYNOPSIS πŸŽ€

qmqpd [generic Postfix daemon options]

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so bestie, here's the tea: the Postfix QMQP server takes one message per connection. literally one. every single message gets piped through the cleanup(8) daemon, and then it lands in the incoming queue as one single queue file. one message, one queue file, no chaos πŸ’…

and the way this program expects to be run? it's a daemon, so it gets launched by the master(8) process manager. that's its whole origin story.

the QMQP server keeps it simple with access policy β€” it implements exactly one: only client hosts that are explicitly authorized get to use the service. everyone else? not on the list, not getting in πŸ™ˆ


πŸ”’ SECURITY πŸ”’

so this one is moderately security-sensitive, ngl. it talks to QMQP clients and to DNS servers out there on the network β€” so it's out here socializing 🌐

the good news: the QMQP server can be run chrooted at fixed low privilege. slay, safety πŸ’œ


🩺 DIAGNOSTICS 🩺

problems and transactions get logged to syslogd(8) or postlogd(8). if something's up, it's going in the log, periodt.


πŸ’€ BUGS πŸ’€

okay so two things, and they're both just how the QMQP protocol is built:

  • The QMQP protocol provides only one server reply per message delivery. which means it is therefore not possible to reject individual recipients. like, the whole message is a package deal, bestie, you can't pick and choose 😭
  • The QMQP protocol requires the server to receive the entire message before it replies. so if a message is malformed, or if any netstring component is longer than acceptable, Postfix replies immediately and closes the connection. and then? it is left up to the client to handle the situation. not our problem, we said what we said 🫢

βš™οΈ CONFIGURATION PARAMETERS βš™οΈ

changes to main.cf are picked up automatically, because qmqpd(8) processes only run for a limited amount of time anyway. want the change to hit sooner? run postfix reload and speed it up ⚑

the text below is only a parameter summary. for the full details, examples included, go read postconf(5).

πŸ“ CONTENT INSPECTION CONTROLS πŸ“

  • content_filter (empty) β€” after the message is queued, send the entire message to the specified transport:destination.
  • receive_override_options (empty) β€” turn recipient validation, built-in content filtering, or address mapping on or off.

🌈 SMTPUTF8 CONTROLS 🌈

preliminary SMTPUTF8 support got introduced with Postfix 3.0, and we're still calling it preliminary, so know that.

  • smtputf8_enable (yes) β€” enable preliminary SMTPUTF8 support for the protocols described in RFC 6531..6533.
  • smtputf8_autodetect_classes (sendmail, verify) β€” detect that a message needs SMTPUTF8 support, for the specified mail origin classes.

available in Postfix version 3.2 and later:

  • enable_idna2003_compatibility (no) β€” enable 'transitional' compatibility between IDNA2003 and IDNA2008, when converting UTF-8 domain names to/from the ASCII form that gets used for DNS lookups.

🧚 RESOURCE AND RATE CONTROLS 🧚

  • line_length_limit (2048) β€” upon input, long lines get chopped up into pieces of at most this length; upon delivery, long lines get reconstructed.
  • hopcount_limit (50) β€” the maximal number of Received: message headers allowed in the primary message headers.
  • message_size_limit (10240000) β€” the maximal size in bytes of a message, envelope information included.
  • qmqpd_timeout (300s) β€” the time limit for sending or receiving information over the network.

πŸ” TROUBLE SHOOTING CONTROLS πŸ”

  • debug_peer_level (2) β€” the increment in verbose logging level when a nexthop destination, remote client or server name or network address matches a pattern given with the debug_peer_list parameter.
  • debug_peer_list (empty) β€” optional list of nexthop destination, remote client or server name or network address patterns that, if matched, cause the verbose logging level to increase by the amount specified in $debug_peer_level.
  • soft_bounce (no) β€” safety net to keep mail queued that would otherwise be returned to the sender.

🍯 TARPIT CONTROLS 🍯

  • qmqpd_error_delay (1s) β€” how long the Postfix QMQP server will pause before sending a negative reply to the remote QMQP client. yes it's a lil dramatic pause, that's the point πŸ’…

πŸ’œ MISCELLANEOUS CONTROLS πŸ’œ

  • config_directory (see postconf -d output) β€” the default location of the Postfix main.cf and master.cf configuration files.
  • daemon_timeout (18000s) β€” how much time a Postfix daemon process may take to handle a request before it is terminated by a built-in watchdog timer.
  • ipc_timeout (3600s) β€” the time limit for sending or receiving information over an internal communication channel.
  • max_idle (100s) β€” the maximum amount of time that an idle Postfix daemon process waits for an incoming connection before terminating voluntarily.
  • max_use (100) β€” the maximal number of incoming connections that a Postfix daemon process will service before terminating voluntarily.
  • process_id (read-only) β€” the process ID of a Postfix command or daemon process.
  • process_name (read-only) β€” the process name of a Postfix command or daemon process.
  • qmqpd_authorized_clients (empty) β€” what remote QMQP clients are allowed to connect to the Postfix QMQP server port.
  • queue_directory (see postconf -d output) β€” the location of the Postfix top-level queue directory.
  • syslog_facility (mail) β€” the syslog facility of Postfix logging.
  • syslog_name (see postconf -d output) β€” a prefix that is prepended to the process name in syslog records, so that, for example, "smtpd" becomes "prefix/smtpd".
  • verp_delimiter_filter (-=+) β€” the characters Postfix accepts as VERP delimiter characters on the Postfix sendmail(1) command line and in SMTP commands.

available in Postfix version 2.5 and later:

  • qmqpd_client_port_logging (no) β€” enable logging of the remote QMQP client port in addition to the hostname and IP address.

available in Postfix 3.3 and later:

  • service_name (read-only) β€” the master.cf service name of a Postfix daemon process.

πŸ‘€ SEE ALSO πŸ‘€


πŸ“š README FILES πŸ“š

use postconf readme_directory or postconf html_directory to locate this information.

QMQP_README, Postfix ezmlm-idx howto.


πŸ“œ LICENSE πŸ“œ

The Secure Mailer license must be distributed with this software. that's not optional, bestie 🫢


πŸ•°οΈ HISTORY πŸ•°οΈ

The qmqpd service was introduced with Postfix version 1.1. vintage. iconic. still here.


πŸ‘‘ 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


and that's the whole page, bestie β€” qmqpd(8postfix), the Postfix QMQP server, documented and devoured πŸ’– thanks for reading, go authorize your clients, mwah πŸŽ€

πŸ“¦ where this page comes from