These suggestions are developing as MTA patches are written. Please feel free to make suggestions by mailing srs [ta] anarres.org.
Configuration parameters must be made available using the normal MTA configuration mechanism, and must be passed to libsrs2 on initialisation. The configuration parameters which must be provided are documented on the MTA Users page. All parameters must be supported by an implementation.
The library contains sensible defaults for each parameter. The MTA patch must NOT provide defaults for any parameters. If a parameter is not provided, it must be ignored. The patch must error if no secrets are given, or srs_domain is not given and the patch cannot establish a useful domain into which to rewrite addresses.
Forwards SRS should be performed whenever a mail is explicitly forwarded to a new address [at a different domain?]. Search for where the MTA does alias rewriting. After alias expansion, it will usually resubmit the mail to the normal mail processing systems. Forwards SRS rewriting of the destination address should happen between alias expansion and resubmission of the mail.
Reverse SRS should be performed whenever a mail is received with an SRS target address. SRS addresses start with SRS and may be recognised with the macro SRS_IS_SRS_ADDRESS(address) provided in srs.h. SRS reverse rewriting should be performed once. The mail should then be resubmitted to the mail processing system using the normal mechanisms.
Search for where the MTA does alias expansion of local addresses. SRS reverse rewriting should be performed immediately before alias expansion of local names is performed, and the mail should be resubmitted to the queue. Checking validity of SRS addresses in the local address validation stage is not essential, but will permit rejection of invalid SRS addresses before DATA.