Is IMAP suitable to use for an application mail server? - imap

I have an application that needs to read and parse emails from a mail server. hMailServer allows me to route mail into an IMAP folder rather than forwarding it to a pop3 account. Is IMAP fast enough to use as an applications mail server?

The way of fetching the mail data would be more or less same in both the protocols POP and IMAP. In pop u would do retr and in IMAP it is fetch. It has to be the connection speed that would matter. BTW both the protocols are meant to be scaled for millions of mail data and thousands of concurrent connections.

Related

Rails 6 Action Mailbox and Gmail Integration How To

Rails 6 comes with Action Mailbox now. The documentation and community do not have great resources on how to integrate various services outside of the most common such as SendGrid.
Assuming a person uses Google's Gsuite Gmail:
How could they integrate that with Action Mailbox?
Would one use Gmail's API, or would that not be appropriate for Action Mailbox?
If Gmail doesn't work, what is different about SendGrid that makes it integrate appropriately?
Action Mailbox is built around receiving email from a Mail Transfer Agent (MTA) in real time, not periodically fetching email from a mailbox. That is, it receives mail sent via SMTP, it doesn't fetch mail (using IMAP or POP3) from another server that has already received it.
For this to work it is dependent on an external (to Rails) SMTP service receiving the email and then delivering the email to Action Mailbox. These external services are called "Ingresses" and, as at the time of writing, there are 5 available ingresses.
Of the five, four are commercial services that will run the required SMTP servers for you and then "deliver" the email to your application (usually as a JSON payload via a webhook).
Mailgun - scroll down to "Inbound"
Mandrill
Postmark
Sendgrid
You could already use those services in a Rails App and handle the webhooks yourself but Action Mailbox builds a standardised set of functionality on top. Almost like a set of rails to guide and speed the process.
In addition, the fifth ingress is the "Relay" ingress. This allows you to run your own supported MTA (SMTP server) on the same machine and for it to relay the received email to Action Mailbox (usually the raw email). The currently supported MTAs are:
Exim
Postfix
Qmail
To answer your specific questions about Gmail:
How could they integrate that with Action Mailbox?
They couldn't directly. They would need to also set up one of the 7 MTAs listed above and then somehow deliver the emails to that. The delivery could be accomplished with:
Forwarding rules managed by the user at the mailbox level
Dual delivery, split delivery or some other advanced routing rule managed by the admin at the domain level
Would one use Gmail's API, or would that not be appropriate for Action Mailbox?
Even if there were a way to have Gmail fire a webhook on incoming email (I'm not aware of any special delivery options outside the advanced routing rules above), there is currently no way to connect that theoretical webhook to Action Mailbox.
If Gmail doesn't work, what is different about SendGrid that makes it integrate appropriately?
Sendgrid (to use your example, the others work more or less the same way) offers an inbound mail handling API. Just as importantly, the Rails Team has built an incoming email controller to integrate with that API.
Given the lack of Gmail APIs and the lack of a Rails ingress controller, the only way I can think of that you could connect Action Mailbox to an existing Gmail mailbox would be for some other bit of code to check the mailbox, reformat the fetched email and then pose as one of the supported MTAs to deliver it to Action Mailbox.
It would be an interesting exercise and would possibly become a popular gem but it would very much be a kludge. A glorious kludge if done well, but a kludge nonetheless.
Another option would be to leave your example.com domain delivering to Gmail as normal and set up another domain for your Action Mailbox emails. You could use a separate domain, example.org, or a subdomain, app.example.com.
This would involve setting up one of the 7 supported SMTP servers and pointing the MX records for example.org or app.example.com at those servers.
Bonus trivia: Another name for an MTA is a Mail eXchager, hence the name for a DNS mail record is an MX record.
To integrate IMAP with Rails, have a look into the greate mail_room Gem
It's a daemon that you can start alongside your app, which listens onto couple of IMAP inboxes, and then convert those into either a Sidekiq Worker or push it via http to your app.
It's used by Gitlab for their mail interactions (Answer to thread, create issue by writing to an email).
They also have a section on how to integrate with ActionMailbox.
If you were dead set on doing this, Gmail has had IMAP IDLE (push) support since day one.
It would be quite easy to write a small daemon that watches a Gmail inbox and calls the rails action mailbox webhook endpoint with a properly formatted JSON payload.

Mailcore2: how to receive mail instantly when a new mail arrived?

I'm building an iOS mail client for receiving mails via mailcore2, with IMAP protocol, I've fetched the mail messages successfully. But, how to implement the remote notification push when the target mail account received a new mail in client? I checked the mailcore2 project and some google search results, no luck there.
Please help, thanks!
UPDATE:
Let me clarify the problem details, for the mail client like Airmail in Mac and Microsoft Outlook in iOS, they support to add a IMAP protocol mail account for sending and receiving e-mails, e.g. I added my qq.com mail to Outlook for iOS client, once a new mail arrived to my INBOX in qq mail, I could get an instant remote notification from Outlook client right now.
Let me guess, the mail client didn't upload/save my IMAP-protocol mail config to microsoft/outlook server, all the receiving mail logics just work in local, including communication protocol.
How about IMAP? I've check this article on difference between POP and IMAP. IMAP just keep the client and server have the same account mail data all the time.
Airmail in Mac used mailcore2 in its implementation, so how does it make sure the remote notification work? I don't think they deployed a server side to check the new email arrival for all the user accounts, really.
On mailcore2, I think this is the key point, the remote push should be implemented by it, not some unknown servers. I checked the project structure basically, it's so huge for me and there are many c++ code logics, I must read many mail related blogs before reading it. If someone knows the related guide/wiki/header files, please share to me, or point the mistake on my above guess out, great thanks!

Features of Mandrill API

I am new to Mandrill and its integration. Can anyone help me to figure out the advantages of using Mandrill? What can be done using Mandrill other than sending messages and tracking them?
Mandrill has many uses. You might have seen those on their website itself. Actually its a Mail Transaporter like PHP mailer, but it uses their own server for sending mails.
As said on their website,
Mandrill runs on a globally distributed infrastructure that can
deliver emails in milliseconds.
This is because when you send a mail through their SMTP or send.json (API) method, the send mail possibly see the fastest path algorithm to deliver a mail. That's why it take milliseconds to deliver. They have ~7 different mail servers worldwide for this.
Major Features,
Sending mails fastly than our own server using PHP Mailer.
Sending mails via pre-designed templates which can be reusable by the merge vars we're using.
Support multiple language platforms like, cURL, JSON, Python, PHP, Ruby, Nodejs, Dart and also their depending frameworks.
It tracks clicks from the mail we sent. For Ex: each and every url link in our sent mails is redirected only after tracking from mandrillapp site. This enables mandrill to track the no of opens in a mail and track analytics.
Through mandrill we can construct our own mail sending application or integrate into an existing application.
It's mostly used for Transactional Messages like functions like welcome mail, forgot password, cart details and etc.
It can be integrated into other shopping cart web applications.
Their api call works on even in the developer environment.
Lesser spam.
Verified domain options like DKIM and SPF settings. This enables the mails to identified by major email providers like gmail, google, etc.
It can be used as SMTP version and can be integrated into major SMTP applications.
Reports: Demographics of email send, Compare status, Which url in our mails has been clicked and no of counts.
Setup rule for delivering emails.
A/B testing, custom SMTP headers, Inbound domains and etc.
There are many other features in developer perspective. If you mention in which platform you're trying to use mandrill addditional details can be provide.
Hope this might help you.
To name a few, You can
1) use templates to do A/B testing ( which allow you to experiment with different templates, and end up with something which is effective).
2) use Embedded images , which will reduce the chance that your emails will end up in spam.
Hope this helps,

cordova hybrid Email client app

I have been asked to create an Email client for Android/ios.
I have been looking at Cordova to create this email client app.
There is a cordova-plugin-email-composer plugin to send mails, but I am wondering how to receive Emails through Imap, and store them.
Can anyone advise on this? Or maybe suggest an alternative for Cordova to create a hybrid mail client app?
SMTP (sending mails) is the easier task in cordova, even with mailto:yourname#mailserver.com?subject=...&body=... in the href-attribute in HTML5 you can send an e-mail on mobile devices cross plattform.What you need is a library for IMAP and/or POP3 access in cordova.
I look for the same plugin in Cordova, to write an OpenSource-App as Messenger replacement for WhatsApp using existing Mailserver. This has many advantages:
This OpenSource-App could use existing Infrastructure for sending and receiving messages and attachments as mails. No need to set up new server infrastructure
Messengers like WhatApp are popular and users like that quick communication style.
There is no need to provide my communication to DCC (Data Collecting Company) like Facebook for WhatsApp. Everyone could use the mail server she/or he prefers.
You can receive messages and send messages on a desktop computer with a regular mail client, cross-plattform and cross devices
Basic concept used from AT6FUI

We need a mail client for sending notification emails via ActionMailer

We need to send out thousands of emails per day via ActionMailer in our Rails app. These will be sent upon receipt of user interaction in our app. Gmail Enterprise limits at 2,000 per day, this simply will not be enough for us, and thus we cant use it.
GMail isn't intended or appropriate for large amounts of bulk mail. At the volumes you want to send, you need a dedicated provider designed for buik mailings. There's plenty of providers that do this, but SendGrid is a popular option, and can handle very large volumes.

Resources