Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MVP Requirement: E-mail Functionality #87

Open
BanjoFox opened this issue Feb 3, 2018 · 11 comments
Open

MVP Requirement: E-mail Functionality #87

BanjoFox opened this issue Feb 3, 2018 · 11 comments
Assignees
Labels
backend Items relating to the Rust-side of the app. feature request

Comments

@BanjoFox
Copy link
Collaborator

BanjoFox commented Feb 3, 2018

This is item 1, in the Hackers Guide to Aardwolf

Ideally, Aardwolf will be able to send SMTP messages without having to resort to an external mailer daemon (Postfix, Sendmail, Etc). There are several libraries on Crates.io, such as Mailstrom, and Lettre, that should be able to provide this functionality. E-mails received should include the full URL in both clickable, and plain text (copy/paste) format. Using a basic template for formatting would be ideal, but is not required for the minimum viable alpha release.

Current State
Currently when a user creates an account, the auth_token is generated, and sent to STDOUT. This means that someone has to log into the server occasionally, and manually copy/paste the auth_token URL's in order to authorize new accounts.

-- Do we want SMTP functionality to be "outbound only".
-- Is there a reason why we might need to receive e-mails?

@BanjoFox BanjoFox added the TODO label Feb 3, 2018
@BanjoFox BanjoFox added this to Unassigned Issues in MVP Tracking Mar 27, 2018
@BanjoFox BanjoFox changed the title E-mail Functionality - Discussion Discussion - E-mail Functionality Jul 5, 2018
@BanjoFox BanjoFox changed the title Discussion - E-mail Functionality Development Target - E-mail Functionality Jul 5, 2018
@BanjoFox BanjoFox removed the mozsprint label Jul 5, 2018
@BanjoFox BanjoFox changed the title Development Target - E-mail Functionality Backend Requirement - E-mail Functionality Jul 5, 2018
@BanjoFox BanjoFox added help wanted backend Items relating to the Rust-side of the app. and removed help wanted labels Jul 5, 2018
@BanjoFox BanjoFox changed the title Backend Requirement - E-mail Functionality E-mail Functionality Jul 5, 2018
@KD0BPV KD0BPV self-assigned this Oct 24, 2018
@KD0BPV
Copy link
Contributor

KD0BPV commented Oct 25, 2018

So, none of the crates I've looked at so far fit the bill. Lettre uses either sendmail, or connects to an SMTP relay server, in the same way that your email client does to send mail. By extension, Mailstrom is out too, as it uses Lettre.

What we need is a crate that will act as the relay server for itself, like sendmail does. I haven't had any luck in finding such a crate, especially any that are reliably maintained. We're going to have to roll our own.

I'll get started on this and update with a link to my repository once it's created.

@BanjoFox
Copy link
Collaborator Author

Balls....
My experience with trying to get a mail server (Sendmail, Exim4, or ANYTHING) to function to send mail for the forum was a tremendous pain in the butt. I will start looking for a rust-based mail-server, but yeah... rolling one seems like the premium solution.

@KD0BPV
Copy link
Contributor

KD0BPV commented Oct 25, 2018

Nah, we don't need a server. We just need write a crate that when we call it, does the DNS lookup, connects to the receiving SMTP server, and hands it the message, rather than relying on Sendmail or a Relay server to do that.

@BanjoFox
Copy link
Collaborator Author

So... a light-weight MTA?

@KD0BPV
Copy link
Contributor

KD0BPV commented Oct 26, 2018

Yeah. That's what sendmail is. But like you said, we don't want to depend on an external program that only exists on one platform family.

@BanjoFox BanjoFox added this to the E-mail Functionality milestone Nov 2, 2018
@BanjoFox
Copy link
Collaborator Author

BanjoFox commented Nov 2, 2018

I would argue that Sendmail is NOT a "lightweight" MTA considering how difficult it can be to configure, but I get your point that it functions as an MTA ;)

@asonix
Copy link
Collaborator

asonix commented Nov 27, 2018

@KD0BPV Mailstrom can do the DNS resolution for servers on it's own. I'm pretty sure it doesn't need to connect to an SMTP server to function.

@BanjoFox BanjoFox changed the title E-mail Functionality MVP Requirement: E-mail Functionality Nov 27, 2018
@rayrrr
Copy link

rayrrr commented Jul 27, 2019

Some pure Rust options are emerging: tokio_smtp and samotop crates both seem worth a look. Both use tokio under the hood for asynchronous handling, which makes sense since the email sending should be done in a non-blocking way.

As to the receiving emails/outbound only question, outbound only is the way to go for transactional emails such as these – emails generated via the system automatically when triggered by user actions such as signup. They are outgoing by definition.

@BanjoFox
Copy link
Collaborator Author

@rayrrr -- Cool! Thanks for the input :)

@rayrrr
Copy link

rayrrr commented Jul 28, 2019

@BanjoFox you're welcome! I'd be happy to give this a try. Still learning though. samotop would be my first choice.

@BanjoFox
Copy link
Collaborator Author

BanjoFox commented Jul 28, 2019 via email

@BanjoFox BanjoFox removed this from the E-mail Functionality milestone Aug 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend Items relating to the Rust-side of the app. feature request
Projects
No open projects
MVP Tracking
  
Unassigned Issues
Development

No branches or pull requests

4 participants