This commit is contained in:
Andris Reinman 2017-07-31 00:37:36 +03:00
parent 7e11e991e0
commit 7ed4362ff9

View file

@ -5,6 +5,7 @@ const MessageSplitter = require('./message-splitter');
const db = require('./db');
const consts = require('./consts');
const maildrop = require('./maildrop');
const log = require('npmlog');
module.exports = (options, callback) => {
if (!options.sender || /mailer-daemon|no-?reply/gi.test(options.sender)) {
@ -15,6 +16,7 @@ module.exports = (options, callback) => {
if (err) {
return callback(err);
}
log.info('ggg', JSON.stringify(autoreply));
if (!autoreply || !autoreply.status) {
return callback(null, false);
}
@ -32,19 +34,23 @@ module.exports = (options, callback) => {
let autoSubmitted = headers.getFirst('Auto-Submitted');
if (autoSubmitted && autoSubmitted.toLowerCase() !== 'no') {
log.info('ggg', 1, autoSubmitted);
// skip automatic messages
return callback(null, false);
}
let precedence = headers.getFirst('Precedence');
if (precedence && ['list', 'junk', 'bulk'].includes(precedence.toLowerCase())) {
log.info('ggg', 2, precedence);
return callback(null, false);
}
let listUnsubscribe = headers.getFirst('List-Unsubscribe');
if (listUnsubscribe) {
log.info('ggg', 3, listUnsubscribe);
return callback(null, false);
}
let suppressAutoresponse = headers.getFirst('X-Auto-Response-Suppress');
if (suppressAutoresponse && /OOF|AutoReply/i.test(suppressAutoresponse)) {
log.info('ggg', 4, suppressAutoresponse);
return callback(null, false);
}
@ -56,17 +62,20 @@ module.exports = (options, callback) => {
.zadd('war:' + options.user._id, 'NX', Date.now(), options.sender)
.exec((err, response) => {
if (err) {
log.info('ggg', 5, err.message);
return callback(null, false);
}
if (!response || !response[1]) {
// already responded
log.info('ggg', 6, response);
return callback(null, false);
}
// check limiting counters
options.messageHandler.counters.ttlcounter('wda:' + options.user._id, 1, consts.MAX_AUTOREPLIES, (err, result) => {
if (err || !result.success) {
log.info('ggg', 7, (err && err.message) || result);
return callback(null, false);
}
@ -94,6 +103,7 @@ module.exports = (options, callback) => {
text: autoreply.message
};
log.info('ggg', 8, JSON.stringify(data));
let compiler = new MailComposer(data);
let message = maildrop(
{