lib/util.js (31 lines of code) (raw):
function isPermittedDomain(address, config) {
const permittedDomains = config.rcptToDomainWhitelist.map((d) => d.toUpperCase());
const match = address.match(/.*@(.*)/);
let permitted = false;
if (match && match[1]) {
const domain = match[1].toUpperCase();
permittedDomains.forEach((permittedDomain) => {
if (domain === permittedDomain) {
permitted = true;
}
});
}
return permitted;
}
// Treat some common default admin-type contact emails specially
function isSpecialUser(user) {
let localPart = null;
const names = [ 'admin', 'administrator', 'hostmaster', 'postmaster', 'webmaster' ]
.map((name) => name.toUpperCase());
if (! user) {
return;
}
const match = user.match(/^([^@]*)@/i);
if (match && match[1] && names.indexOf(match[1].toUpperCase()) !== -1) {
localPart = match[1].toLowerCase();
}
return localPart;
}
module.exports = {
isPermittedDomain: isPermittedDomain,
isSpecialUser: isSpecialUser
};