Home

ESTMP Keywords and Verbs (commands) Defined - Fluffy the SMTPGuardDog - spam and virus filter for any SMTP server

Hosted by SourceForge.net Logo


Fluffy is an SMTP proxy - that is it relays commands between two SMTP servers, altering and blocking commands and responses to block junk mail and other undesirable mail. Fluffy needs an understanding of the different SMTP commands so that it can track the state of the SMTP server. When the SMTP server is receiving a mail message we don't want Fluffy to consider the data stream to be commands.

ESMTP is an extension to SMTP which allows additional commands to be defined. If Fluffy doesn't recognise a command it will pass on that command on to the local SMTP server (and echo its response back). This works for any command that doesn't change the state of the SMTP server (say from the processing command state to the accepting mail state). But Fluffy will still throw up warnings.

My aim is to have Fluffy recognise how to handle the various ESMTP commands it might receive. This started me on a quest to identify the commands and figure out how Fluffy should handle them. I didn't find a complete source of information, and met other people who had partially completed the same quest or were trying to understand just one command.

So here I am documenting what I have learnt, in the hope that others might find it useful. Please let me know any errors or additions

Thanks for corrections and additions to:


Under ESMTP, the EHLO greeting will trigger a response which will list ESMTP keywords. Basically this details what features the SMTP mail server supports. Such features may also have 'verbs' (or commands) associated with them that are used during the SMTP conversation.

Keywords/Verbs that beging with the letter X are proprietary extensions.
TokenTypeReferenceSMTP serverComments
8BITMIMEKeywordRFC1652MostIndicates support for 8 bit encoded (rather than 7 bit) mail message contents, through the optional addition of a parameter to the MAIL command
ATRNKeywordRFC2645SomeIndicates support for the ATRN verb. Only valid in an on-demand SMTP server running on port 366
ATRNVerbRFC2645SomeOperates as an authorised TURN equivalent for SMTP servers with a dynamic IP address
AUTHKeywordRFC2554MostIndicates support for the AUTH verb
AUTHVerbRFC2554MostAuthentication. If accepted challenge/response pairs are sent 1 or more times
AUTH=KeywordRFC2554SomeThis keyword is not valid, but seems to indicate support for the AUTH parameter with the MAIL verb. That support should be indicated with the AUTH keyword
BDATVerbRFC3030Microsoft Exchange ServerShould only be used if the CHUNKING keyword is sent. Like the DATA command, but if accepted data of a length specified in BDAT follows. No need for a terminator. Can be multiple chunks - the last BDAT command comes with a LAST parameter. Cannot mix BDAT and DATA
BINARYMIMEKeywordRFC3030Microsoft Exchange ServerIndicates support for binary encoded (rather than 7 bit) mail message contents, through the optional addition of a parameter to the MAIL command.
CHECKPOINTKeywordRFC1845SomeIndicates support for restarting an interrupted SMTP conversation by adding an optional parameter to the MAIL command
CHUNKINGKeywordRFC3030Microsoft Exchange ServerIndicates support for the BDAT command
CONNEGKeywordSMTP and MIME Extensions For Content ConversionIndicates support for the CONNEG parameter to the RCPT-TO command
CONPERMKeywordSMTP and MIME Extensions For Content ConversionIndicates support for the CONPERM paramter for the MAIL FROM command
DATAVerbRFC2821RequiredIf accepted, means that subsequent text makes up a mail message, until a terminator (CR LF . CR LF) is received
DEBUGVerbSendmail,ZmailerIf accepted, puts receiving SMTP server into debug mode
DELIVERBYKeywordRFC2852MostIndicates support for not delivering mail after a designated time. Comes with reporting paramters and adds an optional parameter to the MAIL command
DSNKeywordRFC1891MostIndicates support for Delivery Status Notification by adding optional parameters to the MAIL and RCPT command
EHLOKeywordCommuniGate ProSome faulty SMTP servers will incorrectly list EHLO as a keyword
EHLOVerbRFC1869MostAlternative to HELO. Returns list of keywords identifying SMTP extensions supported by receiving SMTP server
EMALVerbIETF ArchivesZmailerStart of EMAL FROM: Like MAIL except planned to indicate (or allow) 8 bit support for the data contents
ESAMVerbIETF ArchivesZmailerStart of ESAM FROM: Like SAML except planned to indicate (or allow) 8 bit support for the data contents
ESNDVerbIETF ArchivesZmailerStart of ESND FROM: Like SEND except planned to indicate (or allow) 8 bit support for the data contents
ESOMVerbIETF ArchivesZmailerStart of ESOM FROM: Like SOML except planned to indicate (or allow) 8 bit support for the data contents
ENHANCEDSTATUSCODESKeywordRFC2034MostIndicates responses will include an enhanced status code
ENHANGEDSTATUSCODESKeywordRFC2034Zmailer - ObsoleteA typo for enhanCed. Indicates responses will include an enhanced status code
ETRNKeywordRFC1985SomeIndicates support for the ETRN verb
ETRNVerbRFC1985SomeRequests the local SMTP server to initiate delivery of mail to the external SMTP server on a separate SMTP connection
EVFYVerbIETF ArchivesZmailerPlanned to return whether an address is likely to accept 8 bit messages
EXDATAKeywordRFC2821CourierIndicates support for the EXDATA parameter with the MAIL FROM command
EXPNKeywordRFC2821ManyIndicates support for the EXPN verb
EXPNVerbRFC2821ManyExpand a mailing list address into individual recipients. Often disabled to prevent use by spammers
HELOVerbRFC2821RequiredShould be the first command is an SMTP conversation. Identifies sending SMTP server
HELPKeywordRFC2821ManyIndicates support for the HELP verb
HELPVerbRFC2821ManyReturns help message
IDENTVerbRFC1431ZmailerReturns the response from an IDENT query (preusmably on your own connection)
LANGKeywordSMTP Language ExtensionSpecify language for response messages
LANGUAGEKeywordSMTP Language ExtensionIndicates support for the LANG verb
MAILVerbRFC2821RequiredStart of MAIL FROM: Identifies sender of mail message. May be forged. May not correspond to the From: line in a mail message. Should be added in Return Path header. Address to send any undeliverable notifications (bounces)
NOOPVerbRFC2821RequiredNO OPeration. Does nothing but keeps the connection active and can help synchronise commands and responses.
OKKeywordMicrosoft Exchange ServerSome faulty SMTP servers will incorrectly list this as a keyword
ONEXKeywordSendmail - ObsoleteIndicates support for the ONEX verb
ONEXVerbSendmail - ObsoleteIndicates that only one mail message is coming in this connection - stops Sendmail from forking a new process (supposed to make it more efficient)
PIPELININGKeywordRFC2920MostIndicates support for a command stream without waiting for a response to each command. The receiving server is supposed to batch responses. Streaming is supposed to stop with a command that can change the state of the receiving SMTP server (such as the DATA command)
QUITVerbRFC2821RequiredDisconnects
RCPTVerbRFC2821RequiredStart of RCPT TO: Identifies recipient of mail message.
READYKeywordFTGateSome faulty SMTP servers will incorrectly list this as a keyword
RSETVerbRFC2821RequiredResets the server state
SAMLKeywordRFC2821ObsoleteIndicates support for the SAML verb
SAMLVerbRFC2821ObsoleteStart of SAML FROM: Like MAIL except supposed to also display the message on the recipients computer (early form of instant messaging)
SOMLKeywordRFC2821ObsoleteIndicates support for the SOML verb
SOMLVerbRFC2821ObsoleteStart of SAML FROM: Like MAIL except supposed to either mail the message OR display the message on the recipients computer (early form of instant messaging)
SENDKeywordRFC2821ObsoleteIndicates support for the SEND verb
SENDVerbRFC2821ObsoleteStart of SEND FROM: Like MAIL except supposed to display the message on the recipients computer (early form of instant messaging)
SIZEKeywordRFC1870MostIndicates the maximum size of messages that will be accepted, and indicates support for message sizes to be included as a parameter with the MAIL verb
QUEUVerbIBM VM SMTPReturns mail delivery queue information
RELAYKeywordDraft RFC 2476PMDF - ObsoletePart of a draft which was dropped in the final version
STARTTLSKeywordRFC2487SomeIndicates support for the STARTTLS verb.
STARTTLSVerbRFC2487SomeTriggers start of TLS negotiation for secure SMTP conversation. If successful, resets state to before EHLO command sent
SUBMITTERKeywordResponsible Submitter of an E-mail MessageIndicates support for the SUBMITTER Parameter of the MAIL command
TETHYSKeywordFTGateUnknown
TICKKeywordPMDF - ObsoleteIndicates support for the TICK verb. There were only ever used in BSMTP (Batch SMTP).
TICKVerbIBM VM SMTP, PMDF - ObsoleteReturns a ticket number for BSMTP
TIMEKeywordMercuryIndicates support for the TIME verb.td>
TIMEVerbMercuryReturns the date and time of the receiving mail server
TLSKeywordDraft of RFC2487Microsoft Exchange Server - OnsoleteIndicates support for the TLS verb.
TLSVerbDraft of RFC2487Microsoft Exchange Server - ObsoleteTriggers start of TLS negotiation for secure SMTP conversation. If successful, resets state to before EHLO command sent
TURNVerbRFC2821ObsoleteIf accepted swaps the sending/receveing roles of the external/local SMTP servers. Not recommended due to lack of authentication
TURNMEVerbZmailer - ObsoleteEquivalent to ETRN
VERBKeywordSendmailIndicates support for the VERB verb
VERBVerbSendmailEnableds verbose (detailed) responses
VRFYVerbRFC2821RequiredReturns whether specified email address is a valid recipient. Often disabled to prevent spammers testing a dictionary list of names to build up a list of valid recipients.
WITHELDKeywordFTGateUnknown - possibly indicates the host name is supressed?
X-ADATKeywordESMTP Service Extension for Filtering GatewaysIndicates support for the X-ADAT verb
X-ADATVerbESMTP Service Extension for Filtering GatewaysAllows sending of mail message before specifying recipients
X-DRCPVerbESMTP Service Extension for Filtering GatewaysStart of X-DRCPT TO: Allows deferred specifying recipients following use of X-ADAT
X-ERCPVerbESMTP Service Extension for Filtering GatewaysSpecifies end of recipients following use of X-DRCP
X-EXPSKeywordMicrosoftMicrosoft Exchange ServerIndicates support for the X-EXPS verb
X-EXPSVerbMicrosoftMicrosoft Exchange ServerMicrosoft version of AUTH. Seems to work the same way. If accepted challenge/response pairs are sent 1 or more times.
X=EXPS=KeywordMicrosoft Exchange ServerThis seems to indicate support for the X-EXPS parameter with the MAIL verb.
X-LINK2STATEKeywordMicrosoftMicrosoft Exchange ServerIndicates support for the X-LINK2STATE verb
X-LINK2STATEVerbMicrosoftMicrosoft Exchange ServerExchange of routing information. Supposedly generates one response
X-RCPTLIMITKeywordZmailerParameter follows indicates maximum number of recipients per mail message
X-TURNMEKeywordZmailer - ObsoleteIndicates support for the TURNME verb
XADRKeywordPMDFIndicates support for the XADR verb
XADRVerbPMDFReturns information about how an address is routed internally by PMDF as well as general channel information
XAUDKeywordNT MailI'm guessing this is an audit ID reporting licence number and version
XAUTHKeywordMicrosoft bug reportMicrosoft Exchange Server 5.0Indicates support for the XAUTH verb
XAUTHVerbMicrosoft bug reportMicrosoft Exchange Server 5.0Authentication. If accepted challenge/response pairs are sent 1 or more times.
XBDATAKeywordMailbeamerDetails are unknown.
XCIRKeywordPMDFIndicates support for the XCIR verb
XCIRVerbPMDFReturns PMDF circuit check information
XDATASIZEKeywordLSMTPI'm guessing it's an obsolete form of XLSMTP-DATASIZE
XDSNKeywordRFC1891Zmailer,SendmailIndicates support for Delivery Status Notification by adding optional parameters to the MAIL and RCPT command
XEXCH50KeywordMicrosoftMicrosoft Exchange ServerIndicates support for the XEXCH50 verb
XEXCH50VerbMicrosoftMicrosoft Exchange ServerAllows transfer of binary data with Exchange specific recipient information (eg plain text only versus MIME, etc). If accepted, receiver SMTP servers sends 354 Send Binary data and sending SMTP server sends the number of bytes as the first parameter on the XEXCH50 command. Once these bytes are sent, the receiving SMTP server sends an acknowledgement
XGENKeywordPMDFIndicates support for the XGEN verb
XGENVerbPMDFReturns status information about whether a compiled configuration and compiled character set are in use
XLICENSEVerbLSMTPReturns license information
XLSMTP-ACKRCPTKeywordLSMTPI'm guessing it's linked with L-Soft's LISTSERV programme. There are probably associated keywords. Details are unknown.
XLSMTP-DATASIZEKeywordLSMTPI'm guessing it's linked with L-Soft's LISTSERV programme. There are probably associated keywords. Details are unknown.
XLSMTP-MMERGEKeywordLSMTPI'm guessing it's linked with L-Soft's LISTSERV programme and mail merge. There are probably associated keywords. Details are unknown.
XMBEAM30KeywordMailbeamerI'm guessing this simply identifies the software and version running. Details are unknown.
XONEKeywordSendmail - ObsoleteIndicates support for the ONEX verb
XQUEKeywordSendmail - ObsoleteIndicates support for the XQUE
XQUEVerbSendmail - ObsoleteI'm guessing this is equivalent to ETRN
XREMOTEQUEUEKeywordNetscape Mail serverI'm guessing it indicates support for the XREMOTEQUEUE verb, to implement another version of the TURN command. Details are unknown.
XSBEAM30KeywordMailbeamerI'm guessing this simply identifies the software and version running. Details are unknown.
XSECURITYKeywordSECURITY SMTP Service ExtensionCourierIndicates support for the SECURITY parameter with the MAIL verb. This allows for specifying the secruity level for delivering mail.
XSTAKeywordPMDFIndicates support for the XSTA verb
XSTAVerbPMDFReturns status information about the number of messages processed and currently in the PMDF channel queues
XTRNKeywordSLMailIndicates support for the XTRN verb
XTRNVerbSLMailI believe this is equivalent to ETRN
XUSRKeywordSendmail - ObsoleteIndicates support for the XUSR verb
XUSRVerbSendmail - ObsoleteIndicates that the submitted mail is coming directly from the user, and not relayed from another SMTP server
XVERPKeywordQmail,Postfix,CourierIndicates support for the XVERP parameter with the MAIL verb. This allows for automatic inclusion of the intended recipients address in the MAIL FROM address, so that bounces clearly show the address of the intended recipient.
XVRBKeywordSendmailIndicates support for the VERB verb
XXWALL30KeywordXWallI'm guessing this simply identifies the software and version running. Details are unknown.