mirror of
https://github.com/nodemailer/wildduck.git
synced 2025-10-08 21:06:47 +08:00
updated address handling
This commit is contained in:
parent
2d3155aef2
commit
4505ed0c92
2 changed files with 11 additions and 43 deletions
|
@ -234,8 +234,6 @@ module.exports = (db, server) => {
|
||||||
allowWildcard: Joi.boolean().truthy(['Y', 'true', 'yes', 1])
|
allowWildcard: Joi.boolean().truthy(['Y', 'true', 'yes', 1])
|
||||||
});
|
});
|
||||||
|
|
||||||
let address = tools.normalizeAddress(req.params.address);
|
|
||||||
|
|
||||||
const result = Joi.validate(req.params, schema, {
|
const result = Joi.validate(req.params, schema, {
|
||||||
abortEarly: false,
|
abortEarly: false,
|
||||||
convert: true
|
convert: true
|
||||||
|
@ -251,6 +249,7 @@ module.exports = (db, server) => {
|
||||||
|
|
||||||
let user = new ObjectID(result.value.user);
|
let user = new ObjectID(result.value.user);
|
||||||
let main = result.value.main;
|
let main = result.value.main;
|
||||||
|
let address = tools.normalizeAddress(result.value.address);
|
||||||
|
|
||||||
if (address.indexOf('+') >= 0) {
|
if (address.indexOf('+') >= 0) {
|
||||||
res.json({
|
res.json({
|
||||||
|
@ -259,7 +258,7 @@ module.exports = (db, server) => {
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
let wcpos = req.params.address.indexOf('*');
|
let wcpos = address.indexOf('*');
|
||||||
|
|
||||||
if (wcpos >= 0) {
|
if (wcpos >= 0) {
|
||||||
if (!result.value.allowWildcard) {
|
if (!result.value.allowWildcard) {
|
||||||
|
@ -269,7 +268,7 @@ module.exports = (db, server) => {
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (/[^@]\*|\*[^@]/.test(result.value) || wcpos !== req.params.address.lastIndexOf('*')) {
|
if (/[^@]\*|\*[^@]/.test(result.value) || wcpos !== address.lastIndexOf('*')) {
|
||||||
res.json({
|
res.json({
|
||||||
error: 'Invalid wildcard address, use "*@domain" or "user@*"'
|
error: 'Invalid wildcard address, use "*@domain" or "user@*"'
|
||||||
});
|
});
|
||||||
|
|
|
@ -12,7 +12,7 @@ fi
|
||||||
|
|
||||||
HOSTNAME="$1"
|
HOSTNAME="$1"
|
||||||
|
|
||||||
WILDDUCK_COMMIT="029aeecc233af54bf9170570d87c2e1695fad922"
|
WILDDUCK_COMMIT="v1.0.96"
|
||||||
ZONEMTA_COMMIT="e058fccbf75a87c2d84df43e012ea579d2f9b481"
|
ZONEMTA_COMMIT="e058fccbf75a87c2d84df43e012ea579d2f9b481"
|
||||||
WEBMAIL_COMMIT="be67abbad78c0f912394e0aaaf699629477e3985"
|
WEBMAIL_COMMIT="be67abbad78c0f912394e0aaaf699629477e3985"
|
||||||
|
|
||||||
|
@ -39,6 +39,8 @@ apt-get update
|
||||||
|
|
||||||
apt-get -q -y install mongodb-org pwgen nodejs git ufw build-essential libssl-dev dnsutils python software-properties-common nginx lsb-release wget
|
apt-get -q -y install mongodb-org pwgen nodejs git ufw build-essential libssl-dev dnsutils python software-properties-common nginx lsb-release wget
|
||||||
|
|
||||||
|
SRS_SECRET=`pwgen 12 -1`
|
||||||
|
|
||||||
systemctl enable mongod.service
|
systemctl enable mongod.service
|
||||||
|
|
||||||
# redis
|
# redis
|
||||||
|
@ -91,11 +93,6 @@ echo "user=\"wildduck\"
|
||||||
group=\"wildduck\"
|
group=\"wildduck\"
|
||||||
emailDomain=\"$HOSTNAME\"" | cat - /etc/wildduck/wildduck.toml > temp && mv temp /etc/wildduck/wildduck.toml
|
emailDomain=\"$HOSTNAME\"" | cat - /etc/wildduck/wildduck.toml > temp && mv temp /etc/wildduck/wildduck.toml
|
||||||
|
|
||||||
echo '[[spamHeader]]
|
|
||||||
key="X-Rspamd-Bar"
|
|
||||||
value="^\\+{6}"
|
|
||||||
target="\\Junk"' >> /etc/wildduck/spamheaders.toml
|
|
||||||
|
|
||||||
sed -i -e "s/localhost:3000/$HOSTNAME/g;s/localhost/$HOSTNAME/g;s/2587/587/g" /etc/wildduck/wildduck.toml
|
sed -i -e "s/localhost:3000/$HOSTNAME/g;s/localhost/$HOSTNAME/g;s/2587/587/g" /etc/wildduck/wildduck.toml
|
||||||
|
|
||||||
cd /opt/wildduck
|
cd /opt/wildduck
|
||||||
|
@ -146,15 +143,12 @@ rspamd
|
||||||
tls
|
tls
|
||||||
dkim_verify
|
dkim_verify
|
||||||
|
|
||||||
queue/lmtp
|
# Wild Duck plugin handles recipient checking and queueing
|
||||||
wildduck" > config/plugins
|
wildduck" > config/plugins
|
||||||
|
|
||||||
echo "key=/etc/wildduck/certs/privkey.pem
|
echo "key=/etc/wildduck/certs/privkey.pem
|
||||||
cert=/etc/wildduck/certs/fullchain.pem" > config/tls.ini
|
cert=/etc/wildduck/certs/fullchain.pem" > config/tls.ini
|
||||||
|
|
||||||
echo "host=127.0.0.1
|
|
||||||
port=24" > config/lmtp.ini
|
|
||||||
|
|
||||||
echo 'host = localhost
|
echo 'host = localhost
|
||||||
port = 11333
|
port = 11333
|
||||||
add_headers = always
|
add_headers = always
|
||||||
|
@ -184,20 +178,8 @@ echo 'clamd_socket = /var/run/clamav/clamd.ctl
|
||||||
virus=true
|
virus=true
|
||||||
error=false' > config/clamd.ini
|
error=false' > config/clamd.ini
|
||||||
|
|
||||||
echo '---
|
cp node_modules/haraka-plugin-wildduck/config/wildduck.yaml config/wildduck.yaml
|
||||||
accounts:
|
sed -i -e "s/secret value/$SRS_SECRET/g" config/wildduck.yaml
|
||||||
maxStorage: 1024
|
|
||||||
redis: "redis://127.0.0.1:6379/3"
|
|
||||||
mongo:
|
|
||||||
url: "mongodb://127.0.0.1:27017/wildduck"
|
|
||||||
srs:
|
|
||||||
secret: "supersecret"
|
|
||||||
attachments:
|
|
||||||
type: "gridstore"
|
|
||||||
bucket: "attachments"
|
|
||||||
decodeBase64: true
|
|
||||||
log:
|
|
||||||
authlogExpireDays: 30' > config/wildduck.yaml
|
|
||||||
|
|
||||||
echo '[Unit]
|
echo '[Unit]
|
||||||
Description=Haraka MX Server
|
Description=Haraka MX Server
|
||||||
|
@ -254,7 +236,7 @@ authlogExpireDays=30
|
||||||
# Handle rewriting of forwarded emails
|
# Handle rewriting of forwarded emails
|
||||||
forwardedSRS=true
|
forwardedSRS=true
|
||||||
# SRS secret value. Must be the same as in the MX side
|
# SRS secret value. Must be the same as in the MX side
|
||||||
secret=\"secret value\"
|
secret=\"$SRS_SECRET\"
|
||||||
# SRS domain, must resolve back to MX
|
# SRS domain, must resolve back to MX
|
||||||
rewriteDomain=\"$HOSTNAME\"
|
rewriteDomain=\"$HOSTNAME\"
|
||||||
|
|
||||||
|
@ -262,20 +244,7 @@ rewriteDomain=\"$HOSTNAME\"
|
||||||
# do not set these values if you do not want to use local delivery
|
# do not set these values if you do not want to use local delivery
|
||||||
|
|
||||||
# Use LMTP instead of SMTP
|
# Use LMTP instead of SMTP
|
||||||
localLmtp=true
|
localLmtp=false" > /etc/zone-mta/plugins/wildduck.toml
|
||||||
localMxPort=24
|
|
||||||
# SMTP/LMTP server for local delivery
|
|
||||||
[[\"modules/zonemta-wildduck\".localMx]]
|
|
||||||
priority=0
|
|
||||||
# hostname is for logging only, IP is actually used
|
|
||||||
exchange=\"$HOSTNAME\"
|
|
||||||
A=[\"127.0.0.1\"]
|
|
||||||
AAAA=[]
|
|
||||||
# Interface to be used for local delivery
|
|
||||||
# Make sure that it can connect to the localMX IP
|
|
||||||
[\"modules/zonemta-wildduck\".localZoneAddress]
|
|
||||||
address=\"127.0.0.1\"
|
|
||||||
name=\"$HOSTNAME\"" > /etc/zone-mta/plugins/wildduck.toml
|
|
||||||
|
|
||||||
sed -i -e "s/test/wildduck/g;s/example.com/$HOSTNAME/g;s/signTransportDomain=true/signTransportDomain=false/g;" /etc/zone-mta/plugins/dkim.toml
|
sed -i -e "s/test/wildduck/g;s/example.com/$HOSTNAME/g;s/signTransportDomain=true/signTransportDomain=false/g;" /etc/zone-mta/plugins/dkim.toml
|
||||||
cd /opt/zone-mta/keys
|
cd /opt/zone-mta/keys
|
||||||
|
|
Loading…
Add table
Reference in a new issue