Knowledge base

Directive

found: 400
always-allow-relayingGlobalcriticalset by the HubDirectiveThe very reason a node sends mail at all — and the thing that makes it an open relay if granted to the wrong source.bounce-after<domain>criticalset by the HubDirectiveUntil this point the message lives in the queue and takes up disk space.client<proxy>criticalDirectiveThe sending address the proxy must use; together with server, these are the block’s two required lines.default-virtual-mta<source>criticalset by the HubDirectiveApplies when the stream has not been chosen by anything higher up — a header, a rule or a merge variable.disable-acct-records<domain>criticalDirectiveDisables the creation of accounting records of the chosen types — delivery, bounce, transient failure, queuing failure — for an individual queue.dkim-sign<domain>criticalset by the HubDirectiveTurns signing on for the receiver; the key itself is chosen by the sending domain from the message headers.domain-keyGlobalcriticalDirectiveLinks a selector, a domain and a private key; the first entry whose domain matches or is a parent domain wins.domain-key<virtual-mta>criticalset by the HubDirectiveStream keys are stronger than general ones: when both levels match, these win.enable-source-ip-limits-on-sending-ip<domain>criticalDirectiveImportant when sending through a proxy: the local address and the one the receiver sees are different.host-nameGlobalcriticalDirectiveThe first name is the main one; which one ends up in the greeting is decided by a five-step resolution.host-name<virtual-mta>criticalDirectiveThe same directive written inside a sending address; it overrides the node’s general name but yields to the name tied to the address itself.http-accessGlobalcriticalset by the HubDirectiveA list of addresses and access levels for the management interface; closed to everyone by default.http-api-keyGlobalcriticalset by the HubDirectiveA key in the X-API-Key header grants administrator rights from any address; the line is repeatable.max-msg-rate<domain>criticalset by the HubDirectiveIt counts both deliveries and bounces — this is not “successful messages per hour.”max-smtp-out<domain>criticalset by the HubDirectiveThe main lever of pressure on the receiver: it sees the limit multiplied by the number of your addresses.postmasterGlobalcriticalDirectiveOne of the two settings the engine does not work without: the watchdog sends crash and license expiration reports here, and mail to service addresses is forwarded here as well.process-x-dkim-key<source>criticalDirectiveA permission for the source: with it, the engine takes the private key straight from the X-DKIM-Key header, signs with it and strips the header; without it, the key travels to the recipient.process-x-virtual-mta<source>criticalset by the HubDirectiveA permission for the source — with it the header selects the stream and is stripped before delivery; without it the header does nothing and travels to the recipient.record-fields<acct-file>criticalset by the HubDirectiveThe field list for one record type; the default is the star, meaning the default field set marked in the manual’s tables; it supports exclusions and arbitrary message headers.records<acct-file>criticalset by the HubDirectiveA list of eight possible accounting record types; the default is deliveries and local bounces.retain-x-dkim-key<source>criticalDirectiveThe only source block directive for which the manual prints its warning in bold: with true, the private key travels to the recipient.retry-after<domain>criticalset by the HubDirectiveIt can be set as a sequence: 10m, 1h, 4h — and then the pauses grow from attempt to attempt.run-as-rootGlobalcriticalDirectiveMust be false to run as an unprivileged user; changing it requires a restart.server<proxy>criticalDirectiveWhere the node connects instead of the receiving server; together with client, these are the block’s two required lines.smtp-listenerGlobalcriticalset by the HubDirectiveIf no listener is declared, the node silently brings one up on 0.0.0.0:25.smtp-proxy-source-hostGlobalcriticalDirectiveThe vendor’s way to send through a proxy — local address, proxy, client address and greeting name in one line.smtp-service<source>criticalset by the HubDirectiveTurning it off closes submission for the source without touching the others.smtp-source-hostGlobalcriticalDirectiveBinds outgoing connections to a local address or CIDR range and sets the name in the SMTP greeting.smtp-source-host<virtual-mta>criticalset by the HubDirectiveThe same directive written inside a sending address — it is what makes that address a separate sending identity.total-max-smtp-outGlobalcriticalset by the HubDirectiveKicks in first if a queue limit is higher; on a Standard license — silently.virtual-mta<virtual-mta-pool>criticalset by the HubDirectiveThe line lists a sending address in a pool; without a number the members are used round-robin, with a number — in the given proportion, and the shares must add up to 100.access-token<vault>DirectiveThe Vault authorization token; created manually on the vault side and needed by almost everything that works through the vault.allow-starttls<source>set by the HubDirectivePermission to advertise STARTTLS to this source’s clients; the default is not to allow it, and then submission goes in plain text.allow-unencrypted-plain-auth<source>set by the HubDirectiveThe PLAIN mechanism transmits the password almost in plain text; the line decides whether to allow it without encryption. The default is not to allow it.allowed-sender-lists<source>DirectiveNames address lists that MAIL FROM and the sender address from the message are checked against; a message that fails is rejected at submission.api-key<transmissions-api>DirectiveThe line declares a key the application passes in the Authorization header; the directive is repeated to create several keys.authentication-method<smtp-user>DirectiveFive methods — a password, your own certificate, a certificate from a trusted authority, a Linux system account and LDAP through the vault; the default is a password.auto-mx-rollupGlobalDirectiveOne line instead of a list: the node groups the domains itself and makes up the queue name itself.backoff-max-msg-rate<domain>set by the HubDirectiveThe rate in backoff mode; without an explicit value the normal one is used — that is, the mode will slow nothing down.backoff-max-smtp-out<domain>set by the HubDirectiveThe only one in the family with its own default — 20, not “same as in normal mode.”backoff-notify<domain>set by the HubDirectiveA message arrives for both events — entering backoff mode and leaving it.backoff-reroute-to-virtual-mta<domain>set by the HubDirectiveThe only one in the family that does not slow down but moves: messages leave from another address while the queue is in backoff mode.backoff-retry-after<domain>set by the HubDirectiveThe retry schedule for the duration of backoff; set as a sequence.backoff-to-normal-after<domain>set by the HubDirectiveAfter what interval the queue returns to normal mode by itselfbackoff-to-normal-after-delivery<domain>set by the HubDirectiveWhether one successful delivery returns the queue to normal modebackoff-upon-all-sources-disabled<domain>DirectiveThe vendor warns directly: the queue will not come back by itself — a return timer is needed.bounce-category-patterns<domain>DirectivePuts your own reply parsing ahead of the general one — without changing whether the message bounced.bounce-upon-5xx-greeting<domain>set by the HubDirectiveThe vendor default is yes, and one misconfigured server in the MX list is enough to burn the queue.bounce-upon-no-mx<domain>set by the HubDirectiveIt accepts more than yes and no: an interval gives the domain time during which the node can try the address directly.check-spf-inbound<source>DirectiveEnables the check on the way in and adds a header with its result to the message.check-spf-outbound<domain>DirectiveIf it fails, the message is bounced on our side before it reaches the receiving server; a temporary error means a retry.cold-virtual-mta<virtual-mta>DirectiveNames the cold sending address; how many messages it gets is set by a separate directive in the receiver block.deliver-unmatched-email<bounce-processor>set by the HubDirectiveWhat to do with a message the processor did not recognize; delivers by default, and it is also the condition for forwarding.deliver-unmatched-email<feedback-loop-processor>set by the HubDirectiveWhat to do with a message the processor did not recognize; delivers by default, and it is also the condition for forwarding.disabled-source-ip-notify<domain>DirectiveThe only thing that makes a quiet mechanism noticeable: a message arrives both on disabling and on re-enabling.discard-as-bounce<domain>DirectiveA discard queue still writes to accounting — this line decides with which letter.dkim-identity<domain>DirectiveLets you sign with your own key messages whose From has someone else’s domain — sending on behalf of a client.domain<virtual-mta-pool>DirectiveRules for a receiver written inside a pool are inherited by each of its members; a member’s own block overrides them.domain-key<virtual-mta-pool>DirectiveA pool hands the declaration to each of its members — there is no such thing as a shared key for a pool.enable-signalsGlobalDirectiveThe scope of export with three inheritance levels; the subaccount, the tracking domain or the rule list name are appended here too.enable-tq-record-for-proxy-failure<domain>DirectiveRecords proxy connection failures in tq accounting records; off by default and ignored without this record type.forward-unmatched-to<bounce-processor>DirectiveThe address an unrecognized message goes to; the line is repeatable and requires delivery of unrecognized mail to be allowed.forward-unmatched-to<feedback-loop-processor>DirectiveThe address an unrecognized message goes to; the line is repeatable and requires delivery of unrecognized mail to be allowed.from-domain<rewrite-list>DirectiveChanges the address domain in the From header — the one the recipient sees; this rule does not touch the envelope.hashed-address<address-list>DirectiveThe address is lowercased, hashed with SHA256 and encoded as BASE64URL; the engine hashes the address being checked and compares the hashes.html-edit-error-mode<signals>DirectiveRefuse delivery or send as is when HTML parsing failed; the default is to refuse.http-csrf-protectionGlobalDirectiveForbids changing the node’s state with a GET request and requires a key or a session token on POST; enabled by default.http-enable-api-configGlobalDirectiveOpens an interface that allows creating address lists and sending addresses over HTTP; off by default.http-mgmt-portGlobalset by the HubDirectiveThe TCP port of the management interface; the value 0 does not bring up the monitor at all. The default is 8080.http-webhook-url<acct-file>set by the HubDirectiveAn endpoint that receives accounting records over HTTP; the path in the block tag stays and serves as intermediate storage.includeGlobalset by the HubDirectiveReads an additional file — by path, by mask or by HTTP address; the contents are processed as if written in this place.include-headers-from<virtual-mta>DirectiveThe same line as at the node level; set here, it does not replace the common one but adds to it.include-tlv<proxy>DirectiveAdds a field with the queue domain to the PROXY header; works only with the second protocol version.invalid-virtual-mta-fallbackGlobalDirectiveInstead of a refusal, the message leaves through the stream named here; it works only at submission and only if the refusal is turned off in the source.iso-times<acct-file>DirectiveWhether to write timestamps in ISO format; yes by default.jobid-prefix<source>DirectiveThe value is prepended to the tag that arrived in the header; a reserved value substitutes the login of the submitting user.log-fileGlobalset by the HubDirectiveThe path to the log file; the line is mandatory, and it also sets the location of the monitor and SNMP logs.mail-from<rewrite-list>set by the HubDirectiveChanges the address from the SMTP MAIL FROM command — the one a bounce returns to and the one SPF checks; this rule does not touch the From header.max-cold-virtual-mta-msg<domain>DirectiveWarm-up built into the engine: part of the traffic is diverted to a new address while it builds reputation.max-connect-rate<domain>set by the HubDirectiveHow fast to open new connections to this recipient domainmax-memory-usage-percentGlobalDirectiveWhen the share of physical memory is exceeded, the node responds 452 to MAIL FROM until usage drops back below it.max-smtp-msg-rate<virtual-mta-pool>DirectiveThe same setting written for a group: the pool hands the value out to its members rather than dividing it among them.max-smtp-msg-rate<virtual-mta>DirectiveThe only rate limit that counts the sending address as a whole rather than each queue separately.max-smtp-out<virtual-mta-pool>DirectiveThe pool line goes to each member in full — it is not a reserve shared by the group.max-smtp-out<virtual-mta>set by the HubDirectiveThe overall ceiling of the sending address. Without the line there is none at all — queues add up without limit.min-free-space<spool>set by the HubDirectiveWhen free space falls below the threshold, the directory stops accepting mail; when space comes back, receiving resumes by itself.name-serverGlobalDirectiveSets name server addresses; the line is repeated, and the engine goes through them in rotation. If not set, the operating system’s resolvers are used.openssl-security-levelGlobalDirectiveA number from 0 to 5 below which OpenSSL refuses to work with keys, certificates and protocol versions; 1 by default.password<smtp-user>set by the HubDirectiveSets the password for password login; it is stored in the configuration in plain text, because otherwise not all SASL mechanisms can be supported.precached-domains-file<dns>DirectiveA text file with one domain per line; the listed domains are resolved regardless of whether there are messages for them in the queue.precached-refresh-interval<dns>DirectiveSets a refresh schedule instead of the receiver’s record time to live: these domains’ own TTL is ignored.privacy-policy<acct-file>DirectiveReplaces the local part of an address with a placeholder or a hash; the default is to leave it as is.privacy-policy<signals>DirectiveReplaces the local part of the recipient address with a one-way SHA-1 hash; by default it is sent as is.process-x-job<source>set by the HubDirectiveA permission for the source: with it the header value becomes the message’s job tag, which is then used for selecting in the queue and for stopping a single mailing.protocol-version<proxy>DirectiveThe HAProxy header version, 1 or 2; if not set, it is taken from the sending address, then from the node.proxy-include-tlvGlobalDirectiveAdds a field with the queue domain to the PROXY header; requires the second protocol version.proxy-include-tlv<virtual-mta>set by the HubDirectiveAdds a field with the queue domain to the PROXY header; requires the second protocol version.proxy-protocol<virtual-mta>set by the HubDirectiveThe HAProxy header version, 1 or 2; the default is the first.proxy-retry-after<domain>DirectiveThe same retry step, but for the case when the connection through the proxy did not reach the receiver.queue-to<domain>DirectiveWritten in the block of each domain in the group: you set the shared queue name, the node does not derive it.reenable-source-ip-after<domain>DirectiveThe default is never: an address disabled without an explicit deadline will never come back.reject-invalid-virtual-mta<source>DirectiveThe default is to reject; this same default quietly cancels the fallback stream until it is turned off here.reject-spf-check-fail<source>DirectiveThe most unambiguous of the three outcomes: the domain owner said that mail must not be sent from this address.reject-spf-check-permerror<source>DirectiveThe sender forbade nothing — it made a syntax mistake; the default rejects anyway.reject-spf-check-temperror<source>DirectiveThe only one of the three outcomes where the refusal is temporary: the sender is invited to retry.require-auth<source>set by the HubDirectiveWith true the engine accepts not a single message from the source until the sender logs in — including submission from the machine itself.require-starttls<domain>set by the HubDirectiveWith this line the node drops the connection instead of sending in plain text; the default is to send.require-starttls-before-auth<source>DirectiveWith this line the client must perform STARTTLS before the authentication command; the default is not to require it, and then the password can travel in plain text.reroute-to-virtual-mta<domain>DirectiveThe queue stays the same; what changes is the second half of its name — the address messages leave from.reserved-smtp-in<source-group>DirectiveReserves the named number of slots from the node’s overall limit for the group: others will not take them, even when the node is loaded.retry-attempts<proxy>DirectiveThe number of connection attempts to the proxy before moving on to the next one in the list; the default is one, the ceiling is ten.retry-recipients-after<domain>set by the HubDirectiveA lower bound on the pause for an address that got a 4xx response — on top of the queue’s common schedule.smtp-553-means-invalid-mailbox<domain>set by the HubDirectiveA guess in place of what the receiver left unsaid — and whether the address ends up on the blocklist depends on it.smtp-hosts<domain>DirectiveA list of hosts with preference levels, ports and addresses — or an instruction to take another domain’s MX.smtp-max-auth-failure-rate<source>set by the HubDirectiveAfter the specified number of failed attempts the engine stops accepting logins from the source until the end of the period; the default limits nothing.smtp-pattern-list<domain>set by the HubDirectiveAttaches a named pattern list to connections with the recipient domain; it is used to parse its SMTP responses and assign actions.smtp-proxy-source-host<virtual-mta>set by the HubDirectiveThe same directive written inside a sending address; it replaces the node’s common setting and forbids the regular form and use-proxy in the same block.smtp-server-tls-certificateGlobalset by the HubDirectiveAn X.509 certificate in PEM format — from a file or from a secrets store; the private key password is optional and can also be in the store.smtp-tls-min-version<domain>DirectiveThe oldest protocol version the node is willing to negotiate when sending; the default is TLS 1.1.source<smtp-listener>DirectiveBinds the listener to a named source block, canceling the usual address-based matching for its connections.source<smtp-user>set by the HubDirectiveBinds the login to a named source block; its settings apply after login and override what the connection’s address would have given.source-ip-max-connect-rate<domain>DirectiveNot how many connections to hold, but how often to open them — for each address separately.source-ip-max-msg-rate<domain>DirectiveThe main one in the family: the manual directly names it for those who have several IPs in one sending address.source-ip-max-smtp-out<domain>DirectiveSplits the queue limit by address: each address matching the mask gets a number of its own.spool-max-recipientsGlobalDirectiveLimits how many recipients the node holds in queues; above the ceiling, submission is refused with a temporary error. The default is to calculate from the machine’s resources.suppression-lists<source>DirectiveAttaches one or more named address lists; a recipient on a list is rejected at submission or bounced later, depending on how invalid recipients are accepted.suppression-lists<virtual-mta-pool>DirectiveThe same line as for a sending address, written a level higher — every pool member gets it.suppression-lists<virtual-mta>DirectiveThe same line as in a source, but here there is no choice — the message is always accepted, queued and bounced.sync<acct-file>DirectiveMakes the operating system flush the accounting file’s buffers regularly; off by default.tls-certificate<smtp-listener>DirectiveThe certificate and key password for connections to this particular address and port; inherited from the node certificate.track-time-first-attemptGlobalset by the HubDirectiveEnables tracking the time of the first attempt; it opens a field in accounting records and a delay metric. Off by default.use-dane<domain>DirectiveThe node reads the recipient domain’s DANE records, requires encryption if the domain requires it, and checks the certificate against the fingerprint from DNS; the default is off.use-inbound-proxy<smtp-listener>DirectiveRequires a PROXY header at the start of the connection and takes the real client address from it; off by default.use-mta-sts<domain>set by the HubDirectiveThe node fetches the recipient domain’s policy and, if it is in enforce mode, delivers only when the MX matches, the connection is encrypted and the certificate is verified; the default is off.use-proxyGlobalDirectiveA list of proxy blocks in backup order; the second is used only when the first did not respond.use-proxy<virtual-mta>DirectiveA list of proxy blocks in backup order; the second is used only when the first did not respond.use-starttls<domain>set by the HubDirectiveEnables STARTTLS if the receiver offers it; the default is on.verp-default<source>DirectiveEnabling on the submission side: it applies to everything submitted through this source.accept-invalid-recipients<source>DirectiveSyntactically invalid addresses are accepted and immediately bounced instead of being rejected right in the submission session; they will not be delivered either way.add-date-header<source>DirectiveAdds a date to a message when the submitting side did not set one; the third value also rewrites an existing one.add-message-id-header<source>set by the HubDirectiveAdds an identifier to a message when the submitting side did not set one; an existing one is not rewritten.add-received-header<source>set by the HubDirectiveThe normal behavior of a mail server is to leave a mark in the transfer chain; it is turned off so that the recipient does not see where the message was submitted from.add-x-virtual-mta-header<source>DirectiveThe node itself signs the message with the name of the stream it went out through; the header reaches the recipient.address<address-list>set by the HubDirectiveAccepts three forms — a full address, a bare local part or a regular expression in slashes.address-file<address-list>DirectiveIncludes a file where each line holds a full address or a bare local part.aliasGlobalDirectiveDeclares an address whose mail goes to one or more other addresses; the short form applies to all local names of the node.allow-auth<source>DirectiveA switch for the very possibility of logging in: with no the engine neither advertises nor accepts AUTH, and there is no way to log in.allow-cancel-during-transfer<domain>DirectiveThe default allows it — for a fast service shutdown; turning it off protects against duplicates but makes the node stop more slowly.allow-mailmerge<source>DirectiveOpens merge commands to the submitting side, with which one message is sent to many recipients with value substitution.allow-smtputf8<source>DirectiveAdvertises the SMTPUTF8 extension, allowing addresses beyond Latin script; sending is not guaranteed — the receiver may not support it.always-allow-api-submission<source>DirectiveOne line instead of listing the permissions required by submission through the vendor API; currently equivalent to the merge permission.api-key<signals>DirectiveExactly forty hexadecimal characters; without it the node will not start at all.arc-identity<domain>DirectiveUnlike the regular signature, the name goes into the domain field — the very one the recipient uses to look up the key.arc-sign<domain>DirectiveEnables three ARC headers; the keys are the same as for the regular signature.assume-delivery-upon-data-termination-timeout<domain>set by the HubDirectiveA bet that the message got through: there will be no duplicates, but no truth in accounting either.auth-password<domain>DirectiveThe second half of the pair; the hash sign is not allowed in it — the engine treats it as the start of a comment.auth-username<domain>DirectiveOne of the two lines that enable outgoing authentication: either of them being non-empty is enough.await-slot<smtp-listener>DirectiveDecides for one listener whether to wait for a free slot or respond with a refusal; the node-wide line sets the same for all the others.backoff-max-connect-rate<domain>DirectiveThe default is tricky: without an explicit value the regular connection rate is taken — that is, backoff does not slow connections down.backoff-max-data-volume-rate<domain>DirectiveThe same default trap: without an explicit value the regular volume limit is taken.bcc<source>DirectiveEvery message accepted from the source goes as a blind copy to the named address; the manual suggests this for archiving.body-pattern-file<email-patterns>DirectiveA regular expression with named groups that pulls accounting fields out of the body of a non-standard report; the line is repeatable.bounce-upon-transfer-failure<domain>DirectiveA choice between the risk of a duplicate at the recipient and the risk of not delivering the message at all.cache-ttl<vault>DirectiveThe time after which a key obtained from Vault is requested again; a missing key is always cached for an hour, regardless of this line.check-arc-inbound<source>DirectiveThe same observational check as for the regular signature; it has no refusals either.check-dkim-inbound<source>DirectiveObservation only: the engine has no refusals based on the signature check result at all.check-iprev-inbound<source>DirectiveA reverse address check: the PTR record is compared with the name the submitter introduced itself with.check-spf-inbound-max-void-lookups<source>DirectiveThe threshold protects the resolver from being spun up by someone else’s record — and turns complex records into a permanent error.command<domain>DirectiveMandatory for a pipe queue; substitutions with message properties are expanded in the line.connect-timeout<domain>DirectiveThe first timeout of the conversation: things have not yet reached the greeting.connection-idle-timeout<domain>set by the HubDirectiveThe maximum is ten minutes: that is how long the engine is willing to keep a connection waiting for the next message.custom-message-id-header<signals>DirectiveThe name of the header with your message identifier; the service uses it to link opens and clicks with the other events.delete-after<acct-file>set by the HubDirectiveThe retention period of an accounting file before deletion; the default is eight days, and it applies only without moving.deliver-matched-email<bounce-processor>set by the HubDirectiveWhat to do with a recognized message after parsing: deliver it to the recipient or discard it; discard by default.deliver-matched-email<feedback-loop-processor>set by the HubDirectiveWhat to do with a recognized message after parsing: deliver it to the recipient or discard it; discard by default.deliver-only<spool>set by the HubDirectiveThe directory is drained by delivery, and new messages are not written to it; made for bringing up the spool of a failed server.disable-mx-rollup<domain>DirectiveTurns off both kinds of combining for the domain at once — both the manual list and the automatic one.disconnect-on-transient-error<source>DirectiveInstead of a 4xx response the engine drops the connection — for a submitting side that cannot handle temporary refusals.dkim-add-body-limit<domain>DirectivePuts the length of the signed part into the signature: an appended footer no longer breaks it — and is no longer noticeable.dkim-disallow-adding-headers<domain>DirectiveThe reverse task: the listed names are put into the signature one extra time, and the appearance of such a header breaks it.dkim-headers<domain>DirectiveThe mandatory list cannot be changed — this line only adds your own to it.dkim-identity-fallback<domain>DirectiveNo key matched the sender’s domain — we sign with our own instead of sending without a signature.domain<address-list>DirectiveOne line instead of listing addresses — all recipients of this domain get on the list.domain-key<domain-key-list>DirectiveThe list narrows the key search to itself — and is chosen by a message header, not by the configuration.domain-macroGlobalset by the HubDirectiveDeclares a variable with a list of domains; after that its name with a dollar sign is substituted where the domains would otherwise have to be listed again.edns-udp-lengthGlobalDirectiveEnables the EDNS extension and sets the maximum UDP response size; without it responses longer than 512 bytes are truncated, and the route may be assembled incompletely.enable-inline-seedingGlobalDirectiveEnables seeding at the node, pool or sending address level; the default depends on whether the seeding block is declared, and the value true without a subaccount does not inherit it.engagement-tracking<signals>DirectiveThree values: do not collect, send the events yourself or let the engine insert links and pixels; the default is not to collect.file-destination<domain>DirectiveA path with substitutions: the date, domain and recipient can be inserted right into the name.file-format<domain>DirectiveA file per message, a file per message with envelope addresses, or a shared mbox mailbox.forward-errors-to<bounce-processor>DirectiveAn address for messages the processor could not parse; the line is repeatable.forward-errors-to<feedback-loop-processor>DirectiveAn address for messages the processor could not parse; the line is repeatable.hashed-address-file<address-list>DirectiveIncludes a file where each line is the hash of a whole address; there is not a single readable address in the file.header<pattern-list>DirectiveThe only rule with a parameter — first the header name, then the pattern; the entire header content is matched, including spaces and line breaks.hide-message-source<source>DirectiveRemoves from the added Received header the name and address of whoever submitted the message; the header itself stays.host-idGlobalset by the HubDirectiveA per-server unique number that keeps two engine installations from producing the same Message-Id; the default of zero is the same for everyone.http-delivery-url<domain>DirectiveMandatory for an http-delivery queue; an absolute address without credentials or a query string.http-extra-headers<include-config>DirectiveNames a file whose lines the node will add as HTTP request headers when loading the configuration.http-redirect-to-httpsGlobalset by the HubDirectiveWith true the monitor accepts only https and redirects plain connections; the default is true since version 5.0.http-tls-min-versionGlobalDirectiveThe oldest protocol version the node’s management interface will negotiate; TLS 1.2 by default.http-webhook-extra-headers<acct-file>set by the HubDirectiveA path to a file whose every line is an HTTP header added to the request carrying a batch of records.http-webhook-max-connections<acct-file>DirectiveThe number of threads sending accounting records to the endpoint; the default is one, the ceiling fifty.http-webhook-max-interval<acct-file>set by the HubDirectiveThe interval for collecting records into a batch before sending; the minimum is one minute, the default five.immediate-tls<smtp-listener>DirectiveInstead of STARTTLS the node starts encryption as soon as the connection is accepted; this is a separate submission method, usually on port 465.inbound-proxy-timeout<smtp-listener>DirectiveThe limit for waiting for the PROXY header at the start of a connection; the default is five seconds, and zero means “wait forever.”include<domain>DirectiveThe same directive written inside a recipient block — the included lines become that recipient’s rules.include<smtp-pattern-list>DirectiveThe same directive written inside an SMTP response parsing list — the included lines become its rules.include<source>DirectiveThe same directive written inside a source block — the included lines become its settings.include<virtual-mta>DirectiveThe same directive written inside a sending address — the included lines become its settings.include-headers-fromGlobalDirectiveNames a file with headers in RFC 2822 format; they are inserted right after the Received header the node adds.include-headers-from<virtual-mta-pool>DirectiveThe same line written one level up; every pool member gets it.ip-connection-limitGlobalDirectiveThe same as the limit by MX name, but selection goes by addresses in CIDR notation; allowed only at the node level.jobid-header<source>DirectiveNames another message header from which the job label is taken; the usual method and the merge variable take precedence.log-auto-rotationGlobalDirectiveThe switch for daily log file rotation; on by default.log-commands<source>set by the HubDirectiveWrites the full exchange of commands and responses to the log; the vendor calls this the first step when investigating connectivity.log-disabled-ips<domain>DirectiveThe only source of history: the list of disabled addresses shows “now,” the log shows “what happened.”log-file-world-readableGlobalDirectiveGives all users on the node the right to read the engine’s logs; no by default.log-rotateGlobalDirectiveThe number of files, including the current one; the default is eight, and zero turns rotation off entirely.mail-from<pattern-list>set by the HubDirectiveMatches the address from SMTP MAIL FROM — where bounces are returned — not the From address the recipient sees.map-header-to-field<acct-file>DirectivePuts the contents of a message header into a ready-made field of the chosen record type; not set by default.max-data-volume-rate<domain>set by the HubDirectiveHow many bytes per interval, counting only successful deliveriesmax-errors-per-connection<domain>set by the HubDirectiveThe default is no limit: the connection lives on, however many recipient refusals pile up on it.max-events-recorded<domain>DirectiveNot a log but memory: the last ten errors for a domain, visible in the console and the web monitor.max-message-size<source>set by the HubDirectiveWithout the line the size is not limited at all — the engine’s default is “unlimited.”max-message-size<transmissions-api>DirectiveA limit on the payload size of a request to the submission API; the size multiplier is mandatory, and the engine will not accept a value above two gigabytes.max-msg-per-connection<domain>set by the HubDirectiveThe default is zero, no limit: it pays for the engine to send as much as possible over one connection.max-rcpt-per-message<source>DirectiveA ceiling on acceptance: how many addresses the node agrees to take in one message from the submitting system.max-rcpt-per-transaction<domain>DirectiveCuts a message with a large list into several transfers: more parallelism, but the body goes to the receiver as many times as there are pieces.max-size<acct-file>set by the HubDirectiveA ceiling at which a new file is started; for a webhook — the maximum batch size.max-smtp-data-volume-rate<virtual-mta-pool>DirectiveThe line is written once, but each member applies its own copy — the total volume is a multiple of the number of addresses.max-smtp-data-volume-rate<virtual-mta>DirectiveThe only ceiling that counts volume rather than messages — and only the volume that got through.max-smtp-in<source-group>DirectiveLimits how many connections a group of sources can hold to the node at once; the default limits nothing.min-free-space<signals>DirectiveBelow this threshold the node starts deleting unsent export files; the default is 20 MB.move-to<acct-file>DirectiveThe destination directory for moving accounting files; by default there is no moving.mx-connection-limitGlobalDirectiveLimits connections to each MX matching a pattern — but for each sending address separately, not in total. The vendor advises MX rollup instead.pattern-list<source>set by the HubDirectiveAttaches a named rule list to the source; the list must be declared earlier in the file, and only one can be attached.pickupGlobalDirectiveSets a pair of paths: where to read submitted files from and where to put the ones that could not be processed. Only one directory is supported.precached-max-domains<dns>DirectiveA ceiling on the number of domains taken from the file; it cannot exceed the number of lines in the file, and extra lines are cut off silently.priority<spool>DirectiveDirectories with a higher priority are always used until they fill up; with equal priority they alternate.process-x-dkim-options<source>DirectiveA permission for the source: with it the header sets the selector, domain, identity and query method for signing one message; without it the header is ignored and stays in the message.process-x-schedule<source>DirectiveA permission for the source: with it the engine delivers a message only within the intervals named in the header; without it the message is delivered in the usual way.process-x-sp-subaccount-id<inline-seeding>DirectiveAllows taking the subaccount number from a message header; off by default.process-x-sp-subaccount-id<signals>DirectiveAllows the submitting side to assign a subaccount with a message header; the number from the header overrides the one set by the configuration.proxy-protocolGlobalDirectiveThe HAProxy header version, 1 or 2; the default is the first.queue-filter<acct-file>DirectiveA list of queue names with optional negation; by default records of all queues are written.queue-priority<domain>DirectiveWhen there are no free connections, the engine interrupts the connections of lower-priority queues — starting with the lowest.rcpt-to<pattern-list>DirectiveMatches the address from SMTP RCPT TO; with several recipients the stream of the first match applies to the whole message.reject-iprev-check-fail<source>DirectiveThe default is to let it through, the opposite of the same-named line in the SPF family.reject-iprev-check-permerror<source>DirectiveA permanent reverse check error is almost always someone else’s unfilled zone, not a forgery.reject-iprev-check-temperror<source>DirectiveA temporary name resolution failure; the rejection here is temporary too, and usually your own resolver is to blame.relay-addressGlobalset by the HubDirectiveThe address counterpart of accepting by domain: it accepts a specific address or a regular expression, not a whole domain; the line is repeated.relay-debugGlobalDirectiveSwitches relay control into debug mode: instead of a final refusal the node responds with a temporary one, and the message stays with the sender instead of bouncing.relay-domainGlobalDirectiveLists domains for which the node accepts mail regardless of who submits it; the line is repeated, and it is needed only where the node handles inbound mail.remove-header<source>set by the HubDirectiveLists, separated by commas, the headers removed at delivery; an empty string erases the inherited list.require-starttls<source>DirectiveWith this line the client must perform STARTTLS before anything except the greeting and service commands; the default is not to require it.retain-x-sp-subaccount-id<inline-seeding>DirectiveKeeps the service header in the message after processing; by default it is removed.retain-x-sp-subaccount-id<signals>DirectiveKeeps the service header in the message and makes it possible to write its value to accounting files; the line is shared with the seeding block.retry-after-dns-error<domain>set by the HubDirectiveA separate, shorter step: the receiver never saw this attempt, and haste does not threaten it in any way.retry-upon-new-mail<domain>DirectiveBypasses the retry schedule: every new message in the queue schedules an attempt immediately.rewrite-list<virtual-mta-pool>DirectiveThe same line as for a sending address, written a level higher — every pool member gets it.rewrite-list<virtual-mta>DirectiveAttaches a named list; messages leaving through this sending address go through its rules.sender-or-from<signals-filter>DirectiveEnables or disables export by the domain from the sender header; the subaccount and tracking scope are set there too.server-url<vault>DirectiveThe name or address of the Vault server and, if needed, a port; the scheme is http or https.smtp-421-means-mx-unavailable<domain>set by the HubDirectiveThe vendor default is to stay on the same connection; enabling it moves the queue to the receiver’s backup server.smtp-await-slotGlobalDirectiveWhen there are no free inbound connection slots, the node either waits for one to free up or answers with a 421 greeting and closes the connection.smtp-client-certificate<domain>DirectiveThe client certificate the node shows the receiver on an outgoing connection; its password is set as the second word and is optional.smtp-data-termination-timeout<domain>DirectiveThe last wait of the conversation — and the most dangerous one: shorten it and you get duplicates.smtp-out-rampup-interval<domain>set by the HubDirectiveA soft start: connections are opened one at a time with a pause, not in a burst.smtp-server-tls-min-versionGlobalDirectiveThe oldest protocol version the node is willing to accept from a submitting client; the default is TLS 1.2, stricter than for sending.smtp-tls-ca-file<domain>DirectiveA file with root certificates against which the chain presented by the receiver is verified; by default the list from the distribution is used.source-group<source>DirectiveNames the group the source is assigned to; the limits shared by the group are set in the group block, not here.source-ip-max-data-volume-rate<domain>DirectiveThe only one in the family that counts what was delivered rather than attempts; without a suffix the number reads as bytes.suppress-local-dsn<source>set by the HubDirectiveTurns off bounce, delay and delivery report messages for submission from this source; accounting records are written as usual.time-first-attempt-domains-file<prometheus-listener>DirectiveA list of receivers, up to a hundred names, for which the first attempt metric gets its own label; the rest fall into other.tls-ca-file<smtp-user>DirectiveOne or more files with chains; any client certificate that chains up to at least one of them will do.tls-certificate<smtp-user>DirectiveThe certificate file the submitter must present; it works with the “certificate” verification method and requires an encrypted connection.tls-certificate<transmissions-api-listener>DirectiveA file with an X.509 certificate and a private key for the HTTP API entry point; it can be taken from the secrets vault.tls-certificate-san-or-cn<smtp-user>DirectiveA fully qualified domain name that the client certificate’s SAN or CN must match; it works on top of chain verification.tls-min-version<smtp-listener>DirectiveThe oldest protocol version accepted on this address and port; the default is TLS 1.2, as for the node.tls-min-version<transmissions-api-listener>DirectiveThe oldest protocol version accepted on this HTTP API entry point; the default is TLS 1.2.too-many-rcpts-fails-message<source>DirectiveInstead of refusing the extra recipients, the engine rejects the message at the DATA command; it works together with the recipient number limit.total-max-smtp-inGlobalset by the HubDirectiveLimits the number of simultaneous inbound SMTP connections for the whole node.track-inbound-perf-statsGlobalDirectiveEnables counting the time from MAIL FROM to the end of DATA on acceptance; useful only together with the metrics listener.track-outbound-perf-statsGlobalDirectiveEnables counting the time from MAIL FROM to the end of DATA when sending; useful only together with the metrics listener.track-recipient-events<domain>DirectiveOff by default: the queue page says nothing about what happened to specific addresses.tracking-domain<signals>DirectiveThe domain that inserted links and pixels point to; the default is the vendor’s domain.type<domain>DirectiveOne line that switches the queue between five delivery methods.use-inbound-proxy<transmissions-api-listener>DirectiveRequires a PROXY header at the start of the connection and takes the real client address from it; off by default.use-unencrypted-plain-auth<domain>DirectiveBoth mechanisms transmit the password in the conversation; without encryption it goes over the network in the clear.user-string<acct-file>DirectiveArbitrary text that goes into the userstring field; it works only if that field is listed in the field set.verp-default<domain>DirectiveThe same enabling, but targeted: only for messages to this domain.volume-audit-api-keyGlobalDirectiveMandatory under a license that counts volume: with this key the node authenticates itself when sending data to the vendor. It is issued together with such a license.world-readable<acct-file>DirectiveGives all users of the node the right to read new accounting files; no by default.allow-chunking<source>DirectiveAllows the submitting side to transfer a message with the BDAT command instead of DATA; the default is to allow.allow-empty-x-virtual-mta<source>DirectiveWith this line a message with an empty header is accepted and leaves via the default stream; without it this is an invalid stream and a rejection.allow-priority-interruption<domain>DirectiveWith the value no the queue becomes untouchable: its connections are not taken away, however high the neighbor’s priority.allow-priority-interruption-during-transfer<domain>DirectiveWith no the interruption is postponed until the connection frees up; with yes it happens immediately, in the middle of a transfer. Only for SMTP queues.auto-qualify-domain<source>set by the HubDirectiveAn address of the form user@host arriving in MAIL FROM or RCPT TO is completed to a full one by adding a suffix; the default is to complete.batch-frequency<inline-seeding>DirectiveThe interval of requests to the service for counters and seed assignments; the default is fifteen seconds, the range is from 15 seconds to five minutes.bcc-upon-delivery<domain>DirectiveThe blind copy is taken on the recipient side and only from delivered messages; an empty string erases the inherited value.bounce-upon-pix-transfer-failure<domain>DirectiveA narrow case of the general line: it fires if the receiver’s greeting contains at least ten asterisks.count-moved-records<acct-file>DirectiveAppends the number of records to the log message about moving a CSV file; off by default.custom-dsn-from-headerGlobalDirectiveSets the report sender as a string without substitutions; a newer line with the same purpose can substitute values from the original message.data-send-timeout<domain>DirectiveThe third wait of the conversation; the manual reminds: less than three minutes violates the mail standard.date-header-time<source>DirectiveChooses between the time the message was received and the time of actual delivery; applies only where the node adds the date itself.default-smtp-port<domain>DirectiveUsually 25; a change is needed where sending addresses are told apart by destination port.domain-suffixGlobalDirectiveThe suffix appended to a single-part domain when completing addresses; it works only together with completion itself.dsn-failed-body-template-fromGlobalDirectiveThe path to the report body template file; nine values from the original message are substituted in it — from the node name to the receiver’s reply.dsn-failed-from-templateGlobalDirectiveSets the sender of the generated report with substitutions from the original message; an older line with the same purpose does not support substitutions.dsn-failed-subject-templateGlobalDirectiveSets the subject of the generated report with substitutions from the original message; the set of substitutions is shared with the body template.dsn-format<domain>DirectiveThe second value returns one part instead of the full report — the delivery status, as plain text — so that the report gets through mail filters that cut attachments.dsn-return-default<source>DirectiveThe default for the RET parameter, with which the sender asks to return the whole message or only the headers in the report; the plain-text format cancels this line.dummy-smtp-await-slotGlobalDirectiveWait for a slot or reply 421 at once — and 421 changes the behavior of the sending side.dummy-smtp-has-chunkingGlobalDirectiveThe default is not to announce it, and then the run uses a different transfer method than production mail will.dummy-smtp-has-pipeliningGlobalDirectiveOf the three lines in the set, this one affects the figure the most: without pipelining the conversation is several times longer.dummy-smtp-has-verpGlobalDirectiveNeeded exactly when mail with unique return addresses is run.dummy-smtp-ipGlobalDirectiveA local address keeps the black hole inside the machine; an external one opens it to the network.dummy-smtp-latencyGlobalDirectiveZero by default — and with zero the run measures the wrong thing: a real receiver never answers instantly.dummy-smtp-portGlobalDirectiveThe default of zero means “do not listen”: until the port is set, there is no mechanism.dummy-smtp-update-statsGlobalDirectiveOn by default — and it is the only line in the family that spoils production data.eligibility-ttl<inline-seeding>DirectiveHow long the job eligibility flag is kept; the default is five minutes, the range is from 5 minutes to an hour.enable-bottom-open-pixel<signals>DirectiveThe switch for one of three kinds of insertion; works only with tracking done by the engine, on by default.enable-click-tracking<signals>DirectiveThe switch for one of three kinds of insertion; works only with tracking done by the engine, on by default.enable-top-open-pixel<signals>DirectiveThe switch for one of three kinds of insertion; works only with tracking done by the engine, on by default.http-delivery-extra-headers<domain>DirectiveThe only place to put authorization: credentials in the address itself are forbidden.http-webhook-ca-file<acct-file>DirectivePath to a PEM file with authority certificates by which the node verifies the endpoint’s certificate.http-webhook-certificate<acct-file>DirectiveA PEM file with the certificate the node presents to the endpoint if the endpoint requests it.http-webhook-connect-timeout<acct-file>DirectiveThe wait limit when connecting to the webhook endpoint; the default is five seconds.http-webhook-io-timeout<acct-file>DirectiveThe wait limit for any exchange operation with the endpoint after the connection is established; the default is five seconds.http-webhook-log-verbose<acct-file>DirectiveAdds messages about sending batches to the engine log, not only about errors; off by default.http-webhook-transfer-encoding<acct-file>DirectiveThe only supported value is gzip; by default the content goes out uncompressed.ignore-8bitmime<domain>DirectiveA workaround for a known incompatibility: the external gateway accepts 8BITMIME, while the internal one behind it does not.ignore-chunking<domain>DirectiveA debugging switch: returns the transfer to the ordinary DATA command.ignore-dsn<domain>DirectiveCancels the delivery report requests the message carries from submission.ignore-pipelining<domain>DirectiveThe second debugging switch: commands go one at a time, with a reply to each.inbound-proxy-timeout<transmissions-api-listener>DirectiveThe limit for waiting for the PROXY header at the start of a connection; the default is five seconds, and zero means “wait forever.”log-connections<source>set by the HubDirectiveWrites a log line when a connection from this source opens and closes; off by default.log-data<source>set by the HubDirectiveRecords the exchange byte by byte, in hexadecimal and as text at the same time; the most detailed and heaviest level.log-data<transmissions-api>DirectiveMore detailed logging than the submission API request log; off by default.log-inbound-proxy<transmissions-api-listener>DirectiveWrites the received PROXY header to the log; works only with reception of such a header enabled.log-inbound-proxy<smtp-listener>DirectiveWrites the received PROXY header to the log; works only with reception of such a header enabled.log-match-info<email-patterns>DirectiveWrites to the log the name of the pattern file that matched the parsed report; off by default.log-requests<transmissions-api>DirectiveWrites to the log the fact of every Transmissions API request; off by default.log-resolution<domain>DirectiveWrites to the log the course of name and route lookup for the receiver; off by default.log-tls<source>DirectiveDetails of encryption negotiation with the submitting client, in the node log; the default is not to record.log-tls<transmissions-api>DirectiveThe switch for detailed logging of encryption negotiation when handling HTTP API requests; off by default.log-transfer-failures<domain>set by the HubDirectiveWrites a warning when the connection breaks while headers and body are being transferred; off by default.log-verbose<signals>DirectiveAdds messages about the export of events to SparkPost Signals to the log; off by default.macro-variables-preserve-case<domain>DirectiveApplies only to $to and $from: the recipient’s user name and domain are always lowercased.mailmerge-expands-undefined-variablesGlobalDirectiveWith the default an undefined variable turns into nothing; with the value false it stays in the message as is, brackets included.max-message-hops<source>DirectiveLoop protection: the node does not accept a message that has passed through too many mail systems.max-rcpt-per-message<domain>DirectiveThe same splitting limit under another name — and a full namesake of the reception setting from the submission block.move-interval<acct-file>DirectiveThe interval for moving the accounting file; the default is a day, and it works only together with a destination directory.notify-of-delay-every<domain>DirectiveThe check interval for delay notifications the submitting side requested at submission; the value never turns them off for this receiver.persist-threshold<inline-seeding>DirectiveThe number of messages of one job before contacting the service; the default is five, the range is from 5 to 999.pix-bug-workaround<domain>DirectiveOn by default: a workaround for a known fault that causes messages to be duplicated.process-x-envid<source>DirectiveA permission for the source: with it the header value becomes the message’s envelope identifier and the header is removed; without it the header is ignored and stays in the message.replace-message-id-header<source>DirectiveRewrites an existing Message-Id with its own; has no effect at all on a message without an identifier.replace-smtp-421-service-response<domain>DirectiveReplaces the text after the 421 code with “service unavailable”, so that addresses from someone else’s reply do not get into the bounce report; pattern-based parsing keeps working.retain-x-dkim-options<source>DirectiveDecides whether the recipient will see the header with signing settings; the default is to remove it.retain-x-job<source>DirectiveDecides whether the recipient will see the job label; works only when reading the header is allowed and the header is present in the message.retain-x-schedule<source>DirectiveDecides whether the recipient will see the sending windows assigned to the message; the default is to remove it.retain-x-virtual-mta<source>DirectiveThe default is to remove it; a header left in place carries internal stream names to the recipient.retry-interval<acct-file>DirectiveThe interval for restarting the program that receives the records; the default is five minutes, only for the pipe form.reuse-ssl-session<domain>set by the HubDirectiveSpeeds up a repeated handshake with the same host; does not work on TLS 1.3 and, according to the manual, is supported by only one known receiver.smtp-command-timeout<source>DirectiveThe wait limit for data from the submitting side during the command exchange; the paired line to the body transfer limit.smtp-data-timeout<source>DirectiveThe wait limit for data from the submitting side after the DATA or BDAT command; applies only to incoming connections.smtp-greeting-timeout<domain>DirectiveThe second wait of the conversation: there is a connection, the receiver is silent.smtp-server-tls-ca-fileGlobalDirectiveA file with root certificates against which certificates presented by clients on incoming connections are verified.smtp-server-tls-cipher-server-preferenceGlobalDirectiveWith this line the cipher is chosen by the order in our configuration, not by the client’s order; the default is by the client.smtp-server-tls-ciphersGlobalDirectiveThe list of allowed ciphers in OpenSSL notation for incoming connections; applies to versions up to TLS 1.2, 1.3 has its own list.smtp-server-tls-max-versionGlobalDirectiveThe newest protocol version the node is willing to accept from a submitting client; unlimited by default.spool-delete-corruptedGlobalDirectiveMessage files with encoding errors — traces of data corruption on disk — are deleted instead of lying around idle.thread-reuseGlobalDirectiveTurning it off makes the engine discard threads immediately; this costs performance and removes a workaround for an old library bug. The default depends on the platform.time-first-attempt-hires-timestampGlobalDirectiveAdds milliseconds to the first attempt timestamp in accounting records; works only with counting enabled.tls-ca-file<smtp-listener>DirectiveA list of root certificates for verifying clients on this input; the manual does not promise inheritance from the node’s list.tls-ca-file<transmissions-api-listener>DirectivePath to a PEM file with authority certificates by which the input verifies the submitting client’s certificate.tls-cipher-server-preference<transmissions-api-listener>DirectiveA switch: take the cipher by the order of the node’s list rather than by the client’s preference; off by default.tls-cipher-server-preference<smtp-listener>DirectiveWith this line the cipher is chosen by our order, not by the client’s order; the default is by the client.tls-ciphers<smtp-listener>DirectiveThe list of allowed ciphers in OpenSSL notation for connections on this input; applies up to and including TLS 1.2.tls-ciphers<transmissions-api-listener>DirectiveThe list of allowed ciphers in OpenSSL notation for the HTTP API input; applies up to and including TLS 1.2.tls-max-version<transmissions-api-listener>DirectiveThe newest protocol version accepted on this HTTP API input; unlimited by default.tls-max-version<smtp-listener>DirectiveThe newest protocol version accepted on this address and port; unlimited by default.tls-v1.3-ciphersuites<smtp-listener>DirectiveA separate list for version 1.3 on this input; the default lists five modern suites.tls-v1.3-ciphersuites<transmissions-api-listener>DirectiveThe list of TLS 1.3 suites, colon-separated, for the HTTP API input; all five by default.total-max-transmissions-apiGlobalDirectiveHow many submitting HTTP connections the node serves at once; the engine does not check an upper bound — the operating system sets it.trace-dkim-check<source>DirectiveA trace of signature verification: queries for the public key travel with the message.trace-iprev-check<source>DirectiveThe trace travels with the message; for the reverse check it is short, but its nature is the same.trace-spf-check<source>DirectiveA debugging switch: everything the node asked DNS goes into the message.track-jobs<domain>DirectiveEnables counting jobs per receiver and showing them on its page in the web monitor; off by default.use-https<signals>DirectiveMakes inserted links encrypted; requires your own tracking domain with a certificate; off by default.write-timeout<acct-file>DirectiveThe wait limit for writing to the program, so that an unresponsive collector does not hold up the node; the default is one minute.add-x-msys-api-header<domain>DirectiveAdds the service header that sets SparkPost options and carries the job label into it as the campaign name; a header already in place is left untouched.add-x-msys-api-header-metadata<domain>DirectiveCarries the content of the named headers into the service header; does not work without the parent line, with the header already in place, or for headers the node adds itself.api-key<inline-seeding>DirectiveExactly forty hexadecimal characters; without it seeding does not work at all.arc-algorithm<domain>DirectiveThere is exactly one value; the line exists for completeness of the set, not for choice.arc-body-canon<domain>DirectiveThe only ARC canonicalization line where there really is a choice.arc-expire-after<domain>DirectiveThe default is never; a forwarder’s window for reuse is especially large.arc-headers<domain>DirectiveThe mandatory set is the same as for the ordinary signature; the line only adds to it.arc-headers-canon<domain>DirectiveExactly one method is supported; unlike the ordinary signature, there is no choice.