haraka-dsn
v1.2.0
Published
Haraka DSN
Readme
haraka-dsn
Custom Return Codes
Plugins return constants to Haraka to specify how to respond to clients for a particular hook.
These constants include DENY, DENYSOFT and DENYDISCONNECT which automatically output an appropriate SMTP status code (e.g. 450 temporary failures for DENYSOFT or 550 permanent failures for DENY or DENYDISCONNECT) in the SMTP response sent back to the client along with an optional message text that you return as arguments to the next() function.
The DSN allows a plugin to return RFC compliant extended status codes and allows plugins to override the SMTP status code returned by Haraka.
The DSN module provides named helper functions for the most common status conditions. For less common codes, use DSN.create() directly. See the References section below for further information and background.
Using the DSN module in your plugin
Load the DSN module by adding the following line to the top of your plugin:
const DSN = require('haraka-dsn')Then instead of:
next(DENY, 'No such user')You can call the DSN module and return that in place of optional message argument of next():
next(DENY, DSN.no_such_user())This will cause Haraka to return the following back to the client:
`550 5.1.1 No such user`The DSN functions are used like this:
DSN.<function name>([message], [code]);The function name is required and maps to the list of defined status codes in RFC 3463. All of the available functions are detailed in the table below.
[message] is optional and should contain the message that you would like to be returned to the client, this value can be a string or an array which can contain multiple elements which will cause a multi-line reply to be sent to the client. If a message is not supplied, then the default message for the DSN function is used.
[code] is optional and should be a numeric SMTP status code to be returned to the client.
Available DSN functions
References
- RFC 1893, obsoleted by RFC 3463 — SMTP Enhanced Status Codes
- RFC 3463 — Enhanced Mail System Status Codes
- RFC 3886 — Extended SMTP Delivery Status Notifications
- RFC 4468 — BURL IMAP
- RFC 4954 — SMTP Service Extension for Authentication
- RFC 5248 — A Registry for SMTP Enhanced Mail System Status Codes
- RFC 6710 — SMTP Extension for Message Transfer Priorities
- RFC 7293 — The Require-Recipient-Valid-Since Header Field
- RFC 7372 — Email Authentication Status Codes
- RFC 7504 — SMTP 521 and 556 Reply Codes
- RFC 7505 — A "Null MX" Resource Record for Domains That Accept No Mail
