[2.2.0] - 2023-03-19
BREAKING CHANGES
- the
spf::check
function takes a map of parameters. (#1079)
spf::check(#{ header: "spf", policy: "soft" })
Added
transport::forward
parameters can be passed as url. (#1018)
#{
action "forward to my server" || {
let user = "foo";
let pass = "bar";
let host = "smtp.mydomain.tld";
let port = 25;
transport::forward_all(`smtp://${user}:${pass}@${host}:${port}`);
// or simply
transport::forward_all(env("MY_VAR"));
// you can configure the tls policy:
transport::forward_all("smtp://[::1]?tls=opportunistic");
// `tls` value being among [none, opportunistic, required, tunnel]
transport::forward_all("smtps://domain.tld");
// is equivalent to
transport::forward_all("smtp://domain.tld?tls=tunnel");
}
}
- A LDAP plugin, enabling you to search and compare attributes in an active directory. (#928)
import "plugins/libvsmtp_plugin_ldap" as ldap;
// A service used to connect to and query an active directory.
export const directory = ldap::connect(#{
url: "ldap://openldap:1389",
connections: 4,
timeout: "20s",
bind: #{
dn: "cn=admin,dc=example,dc=org",
pw: "admin",
}
});
#{
mail: [
rule "search for user in AD" || {
let user = ctx::mail_from().local_part;
let address = ctx::mail_from().to_string();
let search = directory.search(
"dc=example,dc=org",
// Search the whole tree.
"sub",
// Match on the user id and address.
`(|(uid=${user})(mail=${address}))`,
// Get all attributes from the entries.
[]
);
if search.result == "error" {
log("warn", `User could not be found in database: ${search.error}`);
return state::deny();
}
log("info", `Entry for ${user} found in AD.`);
// Log every entry and their attributes.
for entry in search.entries {
log("info", `dn=${entry.dn}`);
log("info", `dn=${entry.attrs}`);
for attr in entry.attrs.keys() {
for value in entry.attrs.get(attr) {
log("info", ` attr=${attr},value=${value}`);
}
}
}
state::next()
}
]
}
config.server.tls.certificate
&config.server.tls.private_key
(optional) used when a SNI is not provided or not found among the virtuals server
Modified
- vSMTP loads
/etc/vsmtp/vsmtp.vsl
by default if-c
flag is missing, and stops if no configuration could be found in this path. (#1020) - Better Rhai API documentation. (#1079)
Fixed
-
deliver
(default transport method) will accept the CN correctly (#1018)Before a MX
mta-01.smtp.mydomain.tld
in the dns zone ofmydomain.tld
must had a certificate with the CN beingmydomain.tld
.
Nowmta-01.smtp.mydomain.tld
,smtp.mydomain.tld
ormydomain.tld
will be accepted. -
action
completely ignores it's return value. (#1024) -
spf::check
can be used from themail
stage. (#1027)
Removed
- the
is_default
properties in theon_domain_config()
- the assignation of a default vritual server using a symlink named
default