Update SMTP setup instructions
Add smtp port and tls options Use /user/ path for shorthand sharing link
This commit is contained in:
parent
111581bb78
commit
1c6696e7a4
@ -14,4 +14,4 @@ notifications:
|
|||||||
services:
|
services:
|
||||||
- mongodb
|
- mongodb
|
||||||
env:
|
env:
|
||||||
- MONGO_URI=127.0.0.1:27017/test_db MONGO_USER=travis MONGO_PASS=test SMTP_HOST=127.0.0.1 SMTP_USER=smtp_user SMTP_PASS=smtp_pass SENDER_NAME=Travis SENDER_EMAIL=travis@mailvelope.com
|
- MONGO_URI=127.0.0.1:27017/test_db MONGO_USER=travis MONGO_PASS=test SMTP_HOST=127.0.0.1 SMTP_PORT=465 SMTP_TLS=true SMTP_USER=smtp_user SMTP_PASS=smtp_pass SENDER_NAME=Travis SENDER_EMAIL=travis@mailvelope.com
|
@ -122,7 +122,7 @@ GET /api/v1/key?email=user@example.com
|
|||||||
#### By email address (shorthand link for sharing)
|
#### By email address (shorthand link for sharing)
|
||||||
|
|
||||||
```
|
```
|
||||||
GET /user@example.com
|
GET /user/user@example.com
|
||||||
```
|
```
|
||||||
|
|
||||||
### Request key removal
|
### Request key removal
|
||||||
@ -194,7 +194,7 @@ db.createUser({ user:"keyserver-user", pwd:"trfepCpjhVrqgpXFWsEF", roles:[{ role
|
|||||||
|
|
||||||
## Setup SMTP user
|
## Setup SMTP user
|
||||||
|
|
||||||
The key server uses [nodemailer](https://nodemailer.com) to send out emails upon public key upload to verify email address ownership. To test this feature locally, open the `credentials.json` file and change the `user@gmail.com` to your Gmail test account. Be sure that `smtp.user` and `sender.email` match. Otherwise the Gmail SMTP server will block any emails you try to send. Also, be sure to enable the "less secure apps" in the Gmail security settings. You can read how to do this in the [Nodemailer documentation](https://nodemailer.com/using-gmail/).
|
The key server uses [nodemailer](https://nodemailer.com) to send out emails upon public key upload to verify email address ownership. To test this feature locally, open the `credentials.json` file and change the `smtp.user` and `smtp.pass` attributes to your Gmail test account. Make sure that `smtp.user` and `sender.email` match. Otherwise the Gmail SMTP server will block any emails you try to send. Also, make sure to enable `Allow less secure apps` in the [Gmail security settings](https://myaccount.google.com/security#connectedapps). You can read more on this in the [Nodemailer documentation](https://nodemailer.com/using-gmail/).
|
||||||
|
|
||||||
For production you should use a service like [Amazon SES](https://aws.amazon.com/ses/), [Mailgun](https://www.mailgun.com/) or [Sendgrid](https://sendgrid.com/solutions/transactional-email/). Nodemailer supports all of these out of the box.
|
For production you should use a service like [Amazon SES](https://aws.amazon.com/ses/), [Mailgun](https://www.mailgun.com/) or [Sendgrid](https://sendgrid.com/solutions/transactional-email/). Nodemailer supports all of these out of the box.
|
||||||
|
|
||||||
@ -221,9 +221,11 @@ The `credentials.json` file can be used to configure a local development install
|
|||||||
* MONGO_USER=db_user
|
* MONGO_USER=db_user
|
||||||
* MONGO_PASS=db_password
|
* MONGO_PASS=db_password
|
||||||
* SMTP_HOST=127.0.0.1
|
* SMTP_HOST=127.0.0.1
|
||||||
|
* SMTP_PORT=465
|
||||||
|
* SMTP_TLS=true
|
||||||
* SMTP_USER=smtp_user
|
* SMTP_USER=smtp_user
|
||||||
* SMTP_PASS=smtp_pass
|
* SMTP_PASS=smtp_pass
|
||||||
* SENDER_NAME=Sender
|
* SENDER_NAME="OpenPGP Key Server"
|
||||||
* SENDER_EMAIL=noreply@example.com
|
* SENDER_EMAIL=noreply@example.com
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
},
|
},
|
||||||
"smtp": {
|
"smtp": {
|
||||||
"host": "smtp.gmail.com",
|
"host": "smtp.gmail.com",
|
||||||
|
"port": "465",
|
||||||
|
"tls": "true",
|
||||||
"user": "user@gmail.com",
|
"user": "user@gmail.com",
|
||||||
"pass": "password"
|
"pass": "password"
|
||||||
},
|
},
|
||||||
|
@ -63,7 +63,7 @@ router.get('/api/v1/verify', function *() { // ?keyid=keyid&nonce=nonce
|
|||||||
router.get('/api/v1/verifyRemove', function *() { // ?keyid=keyid&nonce=nonce
|
router.get('/api/v1/verifyRemove', function *() { // ?keyid=keyid&nonce=nonce
|
||||||
yield rest.verifyRemove(this);
|
yield rest.verifyRemove(this);
|
||||||
});
|
});
|
||||||
router.get('/:email', function *() { // shorthand link for sharing
|
router.get('/user/:email', function *() { // shorthand link for sharing
|
||||||
yield rest.share(this);
|
yield rest.share(this);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -103,6 +103,8 @@ function injectDependencies() {
|
|||||||
email = new Email(nodemailer);
|
email = new Email(nodemailer);
|
||||||
email.init({
|
email.init({
|
||||||
host: process.env.SMTP_HOST || credentials.smtp.host,
|
host: process.env.SMTP_HOST || credentials.smtp.host,
|
||||||
|
port: process.env.SMTP_PORT || credentials.smtp.port,
|
||||||
|
secure: (process.env.SMTP_TLS || credentials.smtp.tls) === 'true',
|
||||||
auth: {
|
auth: {
|
||||||
user: process.env.SMTP_USER || credentials.smtp.user,
|
user: process.env.SMTP_USER || credentials.smtp.user,
|
||||||
pass: process.env.SMTP_PASS || credentials.smtp.pass
|
pass: process.env.SMTP_PASS || credentials.smtp.pass
|
||||||
|
@ -47,8 +47,8 @@ class Email {
|
|||||||
host: options.host,
|
host: options.host,
|
||||||
port: options.port || 465,
|
port: options.port || 465,
|
||||||
auth: options.auth,
|
auth: options.auth,
|
||||||
secure: options.secure || true,
|
secure: (options.secure !== undefined) ? options.secure : true,
|
||||||
requireTLS: options.requireTLS || true
|
requireTLS: (options.secure !== undefined) ? options.secure : true
|
||||||
});
|
});
|
||||||
this._sender = options.sender;
|
this._sender = options.sender;
|
||||||
}
|
}
|
||||||
|
@ -200,7 +200,7 @@ describe('Koa App (HTTP Server) Integration Tests', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('GET /:email (sharing link)', () => {
|
describe('GET /user/:email (sharing link)', () => {
|
||||||
beforeEach(done => {
|
beforeEach(done => {
|
||||||
request(app.listen())
|
request(app.listen())
|
||||||
.post('/api/v1/key')
|
.post('/api/v1/key')
|
||||||
@ -212,7 +212,7 @@ describe('Koa App (HTTP Server) Integration Tests', function() {
|
|||||||
describe('Not yet verified', () => {
|
describe('Not yet verified', () => {
|
||||||
it('should return 404', done => {
|
it('should return 404', done => {
|
||||||
request(app.listen())
|
request(app.listen())
|
||||||
.get('/' + primaryEmail)
|
.get('/user/' + primaryEmail)
|
||||||
.expect(404)
|
.expect(404)
|
||||||
.end(done);
|
.end(done);
|
||||||
});
|
});
|
||||||
@ -228,28 +228,28 @@ describe('Koa App (HTTP Server) Integration Tests', function() {
|
|||||||
|
|
||||||
it('should return 200 for correct email address', done => {
|
it('should return 200 for correct email address', done => {
|
||||||
request(app.listen())
|
request(app.listen())
|
||||||
.get('/' + primaryEmail)
|
.get('/user/' + primaryEmail)
|
||||||
.expect(200, publicKeyArmored)
|
.expect(200, publicKeyArmored)
|
||||||
.end(done);
|
.end(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return 400 for invalid email', done => {
|
it('should return 400 for invalid email', done => {
|
||||||
request(app.listen())
|
request(app.listen())
|
||||||
.get('/a@bco')
|
.get('/user/a@bco')
|
||||||
.expect(400)
|
.expect(400)
|
||||||
.end(done);
|
.end(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return 404 for unkown email', done => {
|
it('should return 404 for unkown email', done => {
|
||||||
request(app.listen())
|
request(app.listen())
|
||||||
.get('/a@b.co')
|
.get('/user/a@b.co')
|
||||||
.expect(404)
|
.expect(404)
|
||||||
.end(done);
|
.end(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return 404 for missing email', done => {
|
it('should return 404 for missing email', done => {
|
||||||
request(app.listen())
|
request(app.listen())
|
||||||
.get('/')
|
.get('/user/')
|
||||||
.expect(404)
|
.expect(404)
|
||||||
.end(done);
|
.end(done);
|
||||||
});
|
});
|
||||||
|
@ -37,6 +37,8 @@ describe('Email Integration Tests', function() {
|
|||||||
email = new Email(nodemailer);
|
email = new Email(nodemailer);
|
||||||
email.init({
|
email.init({
|
||||||
host: process.env.SMTP_HOST || credentials.smtp.host,
|
host: process.env.SMTP_HOST || credentials.smtp.host,
|
||||||
|
port: process.env.SMTP_PORT || credentials.smtp.port,
|
||||||
|
secure: (process.env.SMTP_TLS || credentials.smtp.tls) === 'true',
|
||||||
auth: {
|
auth: {
|
||||||
user: process.env.SMTP_USER || credentials.smtp.user,
|
user: process.env.SMTP_USER || credentials.smtp.user,
|
||||||
pass: process.env.SMTP_PASS || credentials.smtp.pass
|
pass: process.env.SMTP_PASS || credentials.smtp.pass
|
||||||
|
Loading…
Reference in New Issue
Block a user