create outbuond smtp server using smtp-server nodejs - node.js

I was trying to create a SMTP server using nodejs module "smtp-server" and referred this: http://nodemailer.com/extras/smtp-server/. When I tried to send mail using nodemailer to server it went properly but when I tried to send mail to gmail account it was never receiver there.
I set up dkim and SPF for my smtp server and checked them using online checkers and my code is same as before as I mentioned here: Could not send mail to users email using my smtp server on website
Assumption:
For sending mail to gmail account I assumed that server automatically redirects mail to gmail server if I put my gmail account in "to:" section of message. Later I studied multiple article and found that there is some thing like outbounding which is used to redirect mail to other server. Kindly tell me how can I set it up for smtp-server module.

Related

How to setup SMTP server for a node js application to send receive mails?

I am creating a node js application, where I required to send and receive the email.
I wanted to create a custom email like myname#mycompany.com for every user of this web app.
How to create this programmatically using the SMTP Server?
also wanted to send and receive email through the SMTP server.
any suggestion for SMTP server provider to achieve this programmatically?
tldr
If you want your app to be self-contained it needs to function as an SMTP client to send email directly to recipients, and as an SMTP server to receive email. If you want to use a provider Amazon SES is a solid offering.
You might be misunderstanding SMTP
In SMTP, the client (the one who initiates the connection) is always the email sender and the server is always the recipient. SMTP gets used in 2 contexts, but fundamentally it's the same thing going on, just with and without requiring authentication.
The first is when users send email to their email provider. For example: I, Alice, use Gmail. I want to send an email to bob#yahoo.com. I start by sending the email to Gmail via SMTP. Gmail's SMTP server is smtp.gmail.com. smtp.gmail.com requires authentication. I authenticate using my Gmail username and password. Once authenticated I am allowed to send email from alice#gmail.com to anyone.
The second is when a server wants to send email to another server. For example: I'm Gmail. One of my users, Alice, just submitted an email to bob#yahoo.com. I need to send that message to the mail servers responsible for the yahoo.com domain, so I look at the MX records for yahoo.com. I see that yahoo.com has 3 mail servers listed: mta5.am0.yahoodns.net, mta6.am0.yahoodns.net, and mta7.am0.yahoodns.net. I am supposed to try the one with the lowest priority value first, but all 3 have a priority of 1, so I just pick one at random. I open an SMTP connection to mta7.am0.yahoodns.net. This server does not require authentication. I am allowed to send email from anyone to anyone#yahoo.com.
SMTP does not have commands to create an account. In fact, SMTP can operate without accounts at all, just like HTTP can operate without a directory of files to serve.
As far as SMTP is concerned the only way to receive mail is to be the SMTP server listening on port 25 for the address listed in the MX record for mycompany.com. There is no way to connect to another SMTP server and ask "give me all the email for myname#mycompany.com". That is what POP and IMAP are for.
How to do what you want
You have 2 separate problems. You need to be able to send mail and you need to be able to receive mail.
Sending
Whenever you need to email foo#bar.com, you could look up the MX records for bar.com, open an SMTP connection to that server, and deliver the message directly. The main problem with this is trying not to wind up in people's spam folder. There are several tricks to this, but that is a whole subject of it's own.
You could use an intermediate SMTP server that you pay someone else to operate. SendGrid and MailGun are 2 examples here. Just like when Alice connected to smtp.gmail.com, you could connect to SendGrid's SMTP server. You would authenticate with them, but unlike with Alice who could only send from alice#gmail.com to anyone, you would be allowed to send email from anyone#mycompany.com to anyone. SendGrid would take care of making sure your emails don't wind up in people's spam.
You could use some other non-SMTP API to send email. Amazon SES for example.
Receiving
You could operate an SMTP server. It could even be built in to your node app if you wanted. You would just need to make sure your server was listening on port 25, and that 1st MX record (the one with the lowest priority) for mycompany.com pointed to that server. This lets you react the second you get an email. You might get a lot of spam doing this, so be ready for that.
You could pay someone to operate an SMTP server for you, and have them dump the email they get into a mailbox accessible via POP or IMAP. You would add an MX record for mycompany.com pointing to the company's SMTP server. You would add accounts using their API. You would poll for new email via POP or IMAP (IMAP supports notifications, but it is a more complex protocol).
Amazon SES also supports receiving email.

How to receive emails with mailgun in Node.js?

I'm already using mailgun to send some data to an email (my gmail account). Now I want to receive emails using #mydomain.com
I saw this other question with 2 answers that seem useless.
I have already set a Route so I receive any msg send to *#mydomain.com* and to forward them to my personal email at gmail:
http://i.imgur.com/VJBz6ij.png
So I tried sending an email to my personal gmail but I'm not receiving any emails.
I have my website on a VPS in digital ocean in case that is important.
So I just needed to add the MX records to DigitalOcean provided by mailgun here:
http://i.imgur.com/Y4bmJYh.png
(link for more info: https://documentation.mailgun.com/user_manual.html#verifying-your-domain)
Now I send data from another email to example#mydomain.com and then I recieve it.
When I try sending data to example#mydomain.com from the same domain that is set in the forward rule it does not work so try with a third party email it you have any problems.

Sending email from ASP.NET application using SMTP server in IIS6; email gets sent without error but the mail gets stuck in mailroot\drop folder

I have a SMTP server set up for my domain in IIS6. The mail sends just fine from the site, there are no errors. But the email is never delivered to the recipient. I checked my mail folder on the server and the emails are stuck in \inetpub\mailroot\drop
Any idea why they wouldn't be getting sent out? This is new territory for me and I'm not having much luck finding a solution.
Since the mail is making its way into the mail folder, I assume the problem lies somewhere in my SMTP server settings
There could be a couple of reasons for this and it sounds to me that your provider has blocked port 25 which means your server can't send the emails, hence, they are still in the queue.
Your best bet is to use a 3rd party SMTP service such as Amazon SES or Mandrill (free), you can either configure your application to send mail directly through these providers, or, you can continue to use IIS SMTP and configure smart host, this will tell IIS SMTP to not bother trying to send email directly, but instead relay it through the 3rd party SMTP service.
More about SMTP and smart hosts here: http://support.microsoft.com/kb/303734/en-us

Sent mail from gmail not showing in cpanel sent mail

I have set up my cpanel email address in Gmail under Check mail from other accounts (using POP3) and also under Send mail as (Mail is sent through: mail.mydomain.com Secured connection on port 587 using TLS)
Looking at Roundcube, I can see the received mails in there, but no sent mails - even though Gmail is sending via my domain server.
Is there a way to be able to view received AND sent mails that go through Gmail ?
Unfortunately emails do not work like that. There is no security as to where an email can be sent from.
I can send an email to anyone in the world and make it look like it was sent from you, most SMTP servers don't verify this information (hence why Gmail can send email from your domain even without your credentials).
Also, although this should theoretically be possible since it's being sent through your domain's SMTP server, it would take a lot of data to be able to store ALL mail that passes through it as associate it with every account. That's why some web email clients only store sent items for around 30 days.
Good luck with finding a suitable solution. This is why many companies use an Exchange server since it provides complete tracking of sent and received emails and disallow the use of Gmail.

Mails for verification using Nodemailer

I want to use node-mailer module to send emails to registering users on app for verification and other purposes also. I am not sure which transport mechanism to use so that emails I send are not a spam and also get delivered.
I also want to use the same domain to receive emails regarding support and bugs(i.e lets say on email on support#example.com). I am planning to set-up google apps account for this. Basically I will set-up the google apps account with me being an user and having an alias support#example.com. So can I also set-up an alias with say admin#example.com and send the emails using nodemailer from my app using this email address? But obviously I don't want to store my email id and password for google apps in the code for security reasons. So how Should I do it?
Other option is to Amazon SES, I believe its a good service and would be very useful. But can I use the same domain name for serving email from AMAZON SES and google apps also being able to host my app? So how to send emails from AMAZON SES by authenticating SPF and DKIM so that these emails reach the inbox of the user.
Saransh,
You absolutely can use the same domain and email address with both Google Apps and AmazonSES without any issues. When it comes to receiving emails, all messages have to be directed to a single server (your MX records). But sending email is very different in that you can send email from many different sources without any issues.
To ensure your messages don't go to the SPAM folder just be sure to properly authenticate all your messages with SPF and DKIM. I'm not sure how this works with AmazonSES, but it was really easy with the provider that I chose for my email http://socketlabs.com

Resources