Skip to main content
  1. Tech/

Setup Outgoing Email on Lightsail Ubuntu VPS

·1 min

I followed instructions here: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-18-04

Everything seemed okay but emails were not getting delivered. Logs showed me that smtp connections were timing out:

tail -f /var/log/mail.log
May  3 12:28:10 postfix/smtp[3160]: connect to gmail-smtp-in.l.google.com[172.217.197.27]:25: Connection timed out
May  3 12:28:10  postfix/smtp[3160]: connect to alt1.gmail-smtp-in.l.google.com[2800:3f0:4003:c00::1a]:25: Network is unreachable
May  3 12:28:40 postfix/smtp[3160]: 4984C41A1E: to=<xxxx@gmail.com>, relay=none, delay=3246, delays=3186/0.01/60/0, dsn=4.4.1, status=deferred (connect to alt2.gmail-smtp-in.l.google.com[2a00:1450:400b:c00::1a]:25: Network is unreachable)

However, I could ping any of the above ip addresses just fine.

Next step was to see if the ip address of my VPS was blacklisted in RBLs, I used https://mxtoolbox.com/blacklists.aspx. None of my ip addresses were in any black list.

Port 25 was open in the firewall, both on the server and in Lightsail’s networking UI.

After spending another hour or so troubleshooting, I found this thread: https://forums.aws.amazon.com/thread.jspa?threadID=316397. It seems AWS/Lightsail has recently started to throttle outgoing emails, but by throttling they meant completely blocking it. You need to open a support ticket to remove these limits here: https://console.aws.amazon.com/support/contacts?#/rdns-limits

So I submitted my request, hopefully, this will resolve the issue.

UPDATE: It worked, now my VPS can send outgoing emails.

Related

hsts Neterr_cert_common_name_invalid

·1 min
Without full understanding, I had enabled HSTS on amerkhalid.com with option includeSubDomains. I had a subdomain that was used as “Custom Domain” to SmugMug site. After enabling HSTS, these subdomains started to throw NET::ERR_CERT_COMMON_NAME_INVALID. The fix is of course simple, don’t use includeSubDomains. But that opens up your top level domain to man in the middle attacks. For now, I decided to follow the best practices and leave includeSubDomains enabled. And decided to not use a custom domain for my SmugMug site.

TypeError: require.extensions.hasOwnProperty is not a function

·1 min
While playing with https://github.com/alexa/interactive-adventure-game-tool, I ran into the following error: > interactive-adventure-game-tool@1.0.0 start /Users/amer/alexa/interactive-adventure-game-tool > node node_modules/gulp/bin/gulp.js /Users/amer/alexa/interactive-adventure-game-tool/node_modules/require-dir/index.js:97 if (!require.extensions.hasOwnProperty(ext)) { ^ TypeError: require.extensions.hasOwnProperty is not a function at requireDir (/Users/amer/alexa/interactive-adventure-game-tool/node_modules/require-dir/index.js:97:37) at Object.<anonymous> (/Users/amer/alexa/interactive-adventure-game-tool/gulpfile.js:1:85) at Module._compile (module.js:660:30) at Object.Module._extensions..js (module.js:671:10) at Module.load (module.js:573:32) at tryModuleLoad (module.js:513:12) at Function.Module._load (module.js:505:3) at Module.require (module.js:604:17) at require (internal/module.js:11:18) at Liftoff.handleArguments (/Users/amer/alexa/interactive-adventure-game-tool/node_modules/gulp/bin/gulp.js:116:3) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! interactive-adventure-game-tool@1.0.0 start: `node node_modules/gulp/bin/gulp.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the interactive-adventure-game-tool@1.0.0 start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /Users/amer/.npm/_logs/2018-01-02T05_12_24_832Z-debug.log The solution was to update require-dir to version 0.3.2 in package.json and run npm install again.