Check for locally requeued messages in postfix
This commit is contained in:
parent
2e224ea057
commit
0b4e866663
1 changed files with 19 additions and 1 deletions
|
@ -6,6 +6,7 @@ let net = require('net');
|
||||||
let campaigns = require('../lib/models/campaigns');
|
let campaigns = require('../lib/models/campaigns');
|
||||||
|
|
||||||
let seenIds = new Set();
|
let seenIds = new Set();
|
||||||
|
let queueIds = {};
|
||||||
|
|
||||||
let server = net.createServer(socket => {
|
let server = net.createServer(socket => {
|
||||||
let remainder = '';
|
let remainder = '';
|
||||||
|
@ -28,7 +29,7 @@ let server = net.createServer(socket => {
|
||||||
return readNextChunk();
|
return readNextChunk();
|
||||||
}
|
}
|
||||||
let line = lines[pos++];
|
let line = lines[pos++];
|
||||||
let match = /\bstatus=bounced\b/.test(line) && line.match(/\bpostfix\/\w+\[\d+\]:\s*([^:]+)/);
|
let match = /\bstatus=(bounced|sent)\b/.test(line) && line.match(/\bpostfix\/\w+\[\d+\]:\s*([^:]+).*?status=(\w+)/);
|
||||||
if (match) {
|
if (match) {
|
||||||
let queueId = match[1];
|
let queueId = match[1];
|
||||||
|
|
||||||
|
@ -37,6 +38,23 @@ let server = net.createServer(socket => {
|
||||||
}
|
}
|
||||||
seenIds.add(queueId);
|
seenIds.add(queueId);
|
||||||
|
|
||||||
|
// Losacno: Check for local requeue
|
||||||
|
let status = match[2];
|
||||||
|
log.verbose('POSTFIXBOUNCE', 'Checking message %s for local requeue (status: %s)', queueId, status);
|
||||||
|
if ( status == 'sent' ) {
|
||||||
|
let queued = / relay=127\.0\.0\.1/.test(line) && line.match(/ queued as (\w+)\)/);
|
||||||
|
if ( queued ) {
|
||||||
|
log.verbose('POSTFIXBOUNCE', 'Marked message %s as locally requeued as %s', queueId, queued[1]);
|
||||||
|
queueIds[queued[1]] = queueId;
|
||||||
|
}
|
||||||
|
return checkNextLine();
|
||||||
|
} else {
|
||||||
|
if ( queueId in queueIds ) {
|
||||||
|
log.verbose('POSTFIXBOUNCE', 'Message %s was requeued from %s', queueId, queueIds[queueId]);
|
||||||
|
queueId = queueIds[queueId];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
campaigns.findMailByResponse(queueId, (err, message) => {
|
campaigns.findMailByResponse(queueId, (err, message) => {
|
||||||
if (err || !message) {
|
if (err || !message) {
|
||||||
return checkNextLine();
|
return checkNextLine();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue