TLS support
This commit is contained in:
parent
c4936040ac
commit
13852758cd
13
README.md
13
README.md
@ -3,8 +3,17 @@ SMTP to HTTP gateway
|
|||||||
|
|
||||||
Usage
|
Usage
|
||||||
-----
|
-----
|
||||||
Begin listening for incoming messages over SMTP and post them to the
|
Begin listening for incoming messages over SMTP and post them to the sepcified
|
||||||
specified HTTP endpoint.
|
HTTP endpoint.
|
||||||
```sh
|
```sh
|
||||||
smtp2http https://dev-services.zingle.me/inbound-communication/email
|
smtp2http https://dev-services.zingle.me/inbound-communication/email
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Enable TLS using separate certificate and key files with signing CA cert.
|
||||||
|
```sh
|
||||||
|
CERT=/etc/private/ssl/zingle.crt
|
||||||
|
KEY=/etc/private/ssl/zingle.key
|
||||||
|
CA=/etc/private/ssl/zingle-ca.crt
|
||||||
|
smtp2http -T$CERT:$KEY:$CA https://dev-services.zingle.me/foo
|
||||||
|
```
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,48 @@
|
|||||||
var squabble = require("squabble").createParser(),
|
var squabble = require("squabble").createParser(),
|
||||||
args;
|
smtp = require("smtp-protocol"),
|
||||||
|
http = require("request"),
|
||||||
|
readFile = require("fs").readFileSync,
|
||||||
|
args,
|
||||||
|
tlsTokens,
|
||||||
|
serverOpts = {};
|
||||||
|
|
||||||
// setup CLI argument parsing
|
// setup CLI argument parsing
|
||||||
squabble.shortOpts().longOpts().stopper()
|
squabble.shortOpts().longOpts().stopper()
|
||||||
|
.option("-T", "--tls")
|
||||||
.required("ENDPOINT");
|
.required("ENDPOINT");
|
||||||
|
|
||||||
// parse arguments
|
// parse arguments
|
||||||
args = squabble.parse();
|
args = squabble.parse();
|
||||||
|
if (args.named["--tls"]) {
|
||||||
|
tlsTokens = args.named["--tls"].split(":");
|
||||||
|
switch (tlsTokens.length) {
|
||||||
|
case 1:
|
||||||
|
serverOpts.pfx = readFile(tlsTokens.shift());
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
serverOpts.cert = readFile(tlsTokens.shift());
|
||||||
|
serverOpts.key = readFile(tlsTokens.shift());
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
serverOpts.cert = readFile(tlsTokens.shift());
|
||||||
|
serverOpts.key = readFile(tlsTokens.shift());
|
||||||
|
serverOpts.ca = readFile(tlsTokens.shift());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Error("unrecognized --tls argument");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// create and start SMTP server
|
||||||
|
smtp.createServer(serverOpts, function(req) {
|
||||||
|
// accept all incoming messages
|
||||||
|
req.on("to", function(to, ack) {
|
||||||
|
ack.accept();
|
||||||
|
});
|
||||||
|
|
||||||
|
// send message to web endpoint
|
||||||
|
req.on("message", function(stream, ack) {
|
||||||
|
stream.pipe(process.stdout);
|
||||||
|
ack.accept();
|
||||||
|
});
|
||||||
|
}).listen(process.env.NODE_PORT || 25);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user