-
Notifications
You must be signed in to change notification settings - Fork 61
/
index.js
76 lines (64 loc) · 2.39 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
var AWS = require('aws-sdk');
var forwardFrom = process.env.from_address;
var forwardTo = process.env.to_address;
exports.handler = function(event, context) {
var msgInfo = JSON.parse(event.Records[0].Sns.Message);
// don't process spam messages
if (msgInfo.receipt.spamVerdict.status === 'FAIL' || msgInfo.receipt.virusVerdict.status === 'FAIL') {
console.log('Message is spam or contains virus, ignoring.');
context.succeed();
}
//Rewrite From: header to contain sender's name, with forwarder's address.
var fromtext = msgInfo.mail.commonHeaders.from[0];
fromtext = fromtext.replace(/<(.*)>/, '')+ ' <' + forwardFrom + '>';
var email = msgInfo.content;
var headers = "From: "+fromtext+"\r\n";
headers += "Reply-To: "+msgInfo.mail.commonHeaders.from[0]+"\r\n";
headers += "X-Original-To: "+msgInfo.mail.commonHeaders.to[0]+"\r\n";
//We show the original recipient in the to. This is ok, because the mail envelope contains the real destination.
headers += "To: "+msgInfo.mail.commonHeaders.to+"\r\n";
if (msgInfo.mail.commonHeaders.cc) {headers += "CC: "+msgInfo.mail.commonHeaders.cc+"\r\n";}
headers += "Subject: "+msgInfo.mail.commonHeaders.subject+"\r\n";
console.log(headers);
if (email) {
var res;
res = email.match(/Content-Type:.+\s*boundary.*/);
if (res) {
headers += res[0]+"\r\n";
}
else {
res = email.match(/^Content-Type:(.*)/m);
if (res) {
headers += res[0]+"\r\n";
}
}
res = email.match(/^Content-Transfer-Encoding:(.*)/m);
if (res) {
headers += res[0]+"\r\n";
}
res = email.match(/^MIME-Version:(.*)/m);
if (res) {
headers += res[0]+"\r\n";
}
var splitEmail = email.split("\r\n\r\n");
splitEmail.shift();
email = headers+"\r\n"+splitEmail.join("\r\n\r\n");
}
else {
email = headers+"\r\n"+"Empty email";
}
console.log(headers);
var params = {
RawMessage: { Data: email },
Destinations: [ forwardTo ],
Source: forwardFrom
};
console.log(params);
new AWS.SES().sendRawEmail(params, function(err, data) {
if (err) context.fail(err);
else {
console.log('Sent with MessageId: ' + data.MessageId);
context.succeed();
}
});
};