Knowledge base

Sending address rotation

entries in this scenario: 66
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.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.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.host-nameGlobalcriticalDirectiveThe first name is the main one; which one ends up in the greeting is decided by a five-step resolution.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.smtp-proxy-source-hostGlobalcriticalDirectiveThe vendor’s way to send through a proxy — local address, proxy, client address and greeting name in one line.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.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.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-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.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.disabled-source-ip-notify<domain>DirectiveThe only thing that makes a quiet mechanism noticeable: a message arrives both on disabling and on re-enabling.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.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.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.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-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-out<virtual-mta-pool>DirectiveThe pool line goes to each member in full — it is not a reserve shared by the group.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.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.reroute-to-virtual-mta<domain>DirectiveThe queue stays the same; what changes is the second half of its name — the address messages leave from.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.suppression-lists<virtual-mta-pool>DirectiveThe same line as for a sending address, written a level higher — every pool member gets it.use-proxy<virtual-mta>DirectiveA list of proxy blocks in backup order; the second is used only when the first did not respond.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.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.include<virtual-mta>DirectiveThe same directive written inside a sending address — the included lines become its settings.include-headers-from<virtual-mta-pool>DirectiveThe same line written one level up; every pool member gets it.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.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.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.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.retain-x-virtual-mta<source>DirectiveThe default is to remove it; a header left in place carries internal stream names to the recipient.How the node responds to the receiving server's wordscriticalMechanismMatches SMTP replies against regular expressions and changes the queue mode on a match — the very trigger that all of the backoff mode machinery waits for.The sending address — what it is made ofcriticalMechanismA named set of everything that is a property of the address: which IP the message leaves from, how the node introduces itself, what it signs with and how fast it sends.Backoff mode — the queue's second personalitycriticalMechanismA queue that a receiver has started refusing switches to a parallel set of limits, retries and routes — ten directives that act only in this mode.Reserved merge variable namescriticalMechanismSome merge variable names are taken by the engine: you cannot give your own variables these names.A name, an address and a greeting name — what a sending address consists ofcriticalMechanismThe definition is small, and two of its properties are easy to miss — omitting the address line silently inherits the node’s settings, and several addresses in one block rotate round-robin.The sender names the stream for each messagecriticalMechanismThe message carries the name of the stream it should be sent through — the choice is made by the submitting program, not by the node configuration.Six ways to choose a stream and the order among themcriticalMechanismA message’s stream is set by a merge variable, an API call, a header, a pattern rule, a listener and a source default — the manual lists them by precedence.Headers the sender uses to control deliverycriticalMechanismSix 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.A group of sending addresses with traffic sharesMechanismA named group of sending addresses; without shares messages are distributed in rotation, with shares in the given proportion, in steps of a tenth of a percent.Warm-up built into the engineMechanismA warmed-up address hands the first N messages of the day for each receiver to its cold partner; the partner sends them itself and builds history.The stream is chosen by matching the envelope or a headerMechanismA named rule list matches the return address, the recipient or a header against regular expressions and assigns a stream on the first match.The regular expression dialectMechanismConfiguration regular expressions are Perl-compatible, based on the PCRE library: that is how sending address selection, reply rules, bounce categories, address lists and signing headers are written.The node takes the stream whose address matches the connection addressMechanismThe source default accepts a reserved value instead of a stream name — then the node chooses the stream whose sending address matches the address the connection arrived at.Selecting a sending address by message contentMechanismRegular expressions are matched against a header, the return address or the recipient and select a sending address or assign a priority; lists can call each other.Spreading a stuck queue across several addressesMechanismRerouting not to one address but to a pool: messages are spread evenly across its members.Removing a sending address — and what happens to its queuecriticalProcedureThe definition is removed with an edit and a reload; messages still tied to the removed address bounce with their own code.Change a sending address when messages are already queuedProcedureNew connections pick up the new definition right after the configuration reload; already open ones live out their lives on the old one.<virtual-mta>criticalConfiguration blockOne outgoing address with a greeting name and its own limits — the identity the receiving server sees.<pattern-list>Configuration blockRegular expressions matched against the sender, the recipient or a header to choose a sending address.disable sourcecriticalCommandThere is an option to bring it back automatically after an interval — without it the address stays disabled forever.enable sourceCommandReturns an address early — and this is the only way if no timer was set when it was disabled.show disabled sourcesCommandThe only window into the disabling mechanism: shows both manual disablings and those made by mailbox provider rules.show vmtasCommandPrints the sending addresses: how many recipients, kilobytes and connections each has.Sending addresses through the configuration APIAPI endpointCreates, reads, extends and deletes sending addresses with requests — as directive lines in JSON.Addresses present on the machineAPI endpointLists the addresses configured on the machine itself.Sending addressesMonitor screenSending addresses that have mail in the queue: recipients, volume, connections; each has a top domains page.