
Show HN: Fake SMTP server as a service - pogo77
https://develmail.com
======
cotillion
"No fake recipient email addresses anymore, use real ones!"

This is a really bad idea. Keep PII far away from your test environments.

~~~
gnud
I completely agree - but I use mailtrap.io quite a lot. It's wonderful to be
able to make up any email address and have mail sent to it from your test
system, without having to run your own mail infrastructure.

------
haroldp
On my laptop, where I do all of my development work, I just configured Postfix
to send everything to plain files:

[http://harold.internal.org/configuring-a-dev-box-mail-
server...](http://harold.internal.org/configuring-a-dev-box-mail-server/)

I like this a lot better than sending stuff out across the network.

~~~
hobarrera
[https://github.com/mailhog/MailHog](https://github.com/mailhog/MailHog) looks
like a really nice alternative, where you can also test HTML mail, etc.

Personally, my local SMTP actually sends email, because I DO want legitimate
email (mutt, cron) though, so I'd be scared to mix up two local smtp
instances.

~~~
peller
MailHog is pretty great. In response to your concern, by default it runs on a
non-standard port, so you need to configure your apps to point at it (port
1025 by default). Even then, you can configure it to act as a MITM, where the
webmail interface lets you "release" messages you actually want to send out:
[https://github.com/mailhog/MailHog/blob/master/docs/CONFIG.m...](https://github.com/mailhog/MailHog/blob/master/docs/CONFIG.md#outgoing-
smtp-configuration)

------
weirdo1
You can just use MailHog for free, it works pretty good.
[https://github.com/mailhog/MailHog](https://github.com/mailhog/MailHog)

~~~
brightball
I'm a fan of MailHog. It's simple for the whole team to setup and the optional
chaos monkey button is a great way to make sure your email system can tolerate
periodic failures properly.

It works locally and is really simple to setup for shared staging/prerelease
environments, handles high volumes really well and the websocket auto-update
system is great.

Personally, I'm a fan of using Mailhog for local and Mailtrap.io for shared
environments because in my experience, non-technical testers have a better
experience with Mailtrap and it's simple tie ins to review the look of emails
on different platforms/clients.

Basically, Mailhog for local sending, does it send, can it handle failure, etc
and Mailtrap.io for "does it look right?".

------
Damin0u
I don't like the idea of external SMTP for this when
[http://danfarrelly.nyc/MailDev/](http://danfarrelly.nyc/MailDev/) can make
everything works locally - and it's very easy to add in our Docker based
projects.

~~~
recursive
SMTP4dev is a good option for Windows.

~~~
lagadu
Personally I use Papercut and so far I'm pretty happy.

~~~
masklinn
If you don't need the complexity of a full-blown visualisation UI, you can
just (assuming you have Python on the machine) run

    
    
         python -m smtpd -n -c DebuggingServer localhost:1025
    

it will dump all mail to stdout.

(change port as you see fit, below 1024 requires root/sudoing)

------
tajen
Why not one-liners? Available on every Linux and Mac:

    
    
            python -m smtpd -n -c DebuggingServer localhost:1025
    

Oh and serve a directory as a website with this other one-liner:

    
    
            python -m SimpleHTTPServer <port>

~~~
cat199
you sir, just shut this whole thread down, methinks.

------
pogo77
Thanks for all the comments so far, we really didn't expect so many of them,
even though most of them are suggesting alternatives (just kidding, we
appreciate them as well :)

We are especially thankful for suggestions about what to change, improve or
add, we will try to work on them and also probably change page design/theme to
make it simpler and cleaner.

We know about most of the alternatives lot of you suggested (mailcatcher,
maildev, etc...) and we used them a lot, but we created this so you can have
it "installed" everywhere or maybe share account so other people from company
could check emails, texts etc easily.

And we wanted to publish this MVP as soon as possible to check if there is at
least some interest in such thing (and even our server couldn't handle it
sometimes :)

------
lloeki
This seems similar to [https://mailtrap.io](https://mailtrap.io)

~~~
asadjb
I've used mailtrap with great success on a Django application that I used to
work on. It really is great to just change the SMTP config for the mail
sending service without having to worry about adding checks for "if in testing
send all emails to a particular address".

Would this service have any benefits over what mailtrap offers?

------
pogo77
We created this for our usage, but decided it could be useful for other people
too :)

It's still under development, so there are not many features yet, but we would
like to hear your opinions and what could we improve or add.

Thanks!

~~~
r1ch
One very useful feature would be to add up to date filtering systems in report
only mode (eg SpamAssassin), SPF / DKIM / DMARC checks, etc. Without having
your own up to date inbound MTA, it's very difficult to test your own mails
for things that might be triggering spam filters.

~~~
c0wb0yc0d3r
Do those services really have a feature like that? That seems like they
wouldn't people to easily figure out if an email the have sent makes it
through filters. Maybe I'm wrong, I have never had to worry about email in a
business environment.

~~~
Vendan
SpamAssassin, DKIM, SPF, DMARC are all things that you can check locally, so
yeah, you can def. determine if an email is going to get through at least
_basic_ filters. Note that SpamAssassin is more a framework, and that a lot of
this stuff is going to be bayesian/machine learning kinda stuff, so while you
may get through basic level filters, people pay a lot for the higher end
stuff, and you _can 't_ test those kinds of things. (barracuda email filtering
and that kind of thing)

------
beefhash
So this is useful for:

1\. developing software that sends e-mails, but not having to set up a test
environment/pray you don't break production, and

2\. testing out new software that insists on sending e-mail when you're just
one person in a small/localhost-only environment.

I love it.

One thing I'm sad to see is that there seems to be no TLS/STARTTLS support on
the side of develmail. Given that TLS can be a bit finicky to set up and that
plaintext SMTP is ideally deprecated as fast as possible, it may be worth a
thought to just Let's Encrypt it.

~~~
pogo77
Thanks! We understand that encryption is a must, we plan to add this feature
as soon as possible.

------
soveran
Some years ago I wrote a tool called mailcat, which is a fake SMTP server that
prints the incoming emails to stdout. I use it to this day when I need it in
development. It's available at
[https://github.com/soveran/mailcat](https://github.com/soveran/mailcat)

------
diamondo25
At my previous company we used mailcatcher[1]. Worked fine, but with lots of
e-mails, the service might crash.

[1] [https://mailcatcher.me/](https://mailcatcher.me/)

------
fs111
You already have an SMTP Server for testing on your OS:

sudo python -m smtpd -n -c DebuggingServer localhost:25

------
oblib
I think some are being a smidgen too hard and dismissive about this.

That you can do this a bunch of other ways isn't really the point at all.
Doesn't even matter if it's easy to do.

The point is to make it very easy to do and to provide some additional
features in the process.

I am all for "another way to do it" and especially if the goals are making it
easier while adding functionality and it doesn't cost me anything.

That's a "win win win" even if you never use it.

------
peterwwillis
I need to make a Username/Password/Domain Checker As A Service. Just send me
your bank account credentials and I will verify that they work for you.

------
old-gregg
pogo77, congrats on launching. somewhat random comment: your site is
completely broken when JS is disabled. This is usually not a problem for
general Internet population, but somewhat important for your target audience
who's got fed up with laggy JS animations and battery drain and installed NoJS
with aggressive settings.

~~~
Dunedan
It's even broken with enabled JavaScript, but disabled Cookies. Sadly lots of
sites are nowadays.

------
sethammons

        As a startup we currently offer one simple subscription program completely for FREE! 
        Meanwhile, we are working hard on our paid plans with plenty of new features, everyone who signs up for our current free plan will be automatically migrated to our highest paid plan for free forever!
        **In case of excessive or unreasonable use of service, additional limits may be applied
    

As a developer, I appreciate being able to lightly use a service for free. I
also appreciate that people have to be paid. It's ok to charge for something
that gives value to other people. I think that promising early users to be
free forever is short sighted. Maybe they have to offer it for free because it
is relatively easy to just spin up your own SMTP sink locally.

~~~
pm24601
* I would not use a free service - I want to know that my company is a customer. I want recourse/support if there a problem. That said - be sure to get insurance, for when there is a fck up.

* I want to pay to make sure that companies we use stay in business.

* If my business is using your services to make money - you should be able to ask for money easily.

* The "free forever" send the message that you are shy about asking for money.

* Start testing pricing now. (with the price "reduced" to "free" \- ie use strikethrough)

* Remember a startup is only a business if it is charging for its services. Otherwise, it is just an expensive hobby.

------
smoyer
In a Java environment, we spin up an instance of Dumbster [0] using our test
harnesses, run our integration tests and tear it back down.

[0]
[https://github.com/athalay07/dumbster](https://github.com/athalay07/dumbster)

------
dunham
For testing/dev at work, I wrote a little go app that listens to SMTP on port
2525, collects mail into a boltdb, and presents it in a very simple web UI
(port 7070) that lets you browse users and their mail. (A simple drill-down of
list of users / emails for user / message details, including all mime parts
and download links for attachments. The top page has a "clear" button.)

It was an evening's work, so it's very simple, but it works and we've found it
very useful. (The original idea was to very simply expose the application
flows involving mail to selenium, but I've found it very useful for dev, too.)

------
kazinator
> _No fake recipient email addresses anymore, use real ones!_

What if you send to the wrong server by mistake; not to develmail.com?
develmai.com won't save your butt then.

Say something breaks in your configuration, and some mail-related layer
resolves the address directly to an MX host and sends it there instead of the
SMTP forwarding host it is supposed to be using ... know what I mean?

If you don't want packets to go to the wrong place, isolate your test box
physically: e.g. 192.168.0.x "lab" network with no gateway to the Internet
your intranet.

~~~
pogo77
You're right, but it's just a suggestion. It's really up to you how you use
the service, sometimes it might be handy to see real data :)

~~~
kazinator
The point is that you _can_ use real data with your own isolated test bed.

I'm not going to involve some random thing on the Internet in my test setup!

For one thing, I'm pretty sure I'd be violating a document that I signed about
promising to safeguard my client's IT security, secrets and intellectual
property.

Real data could be sensitive.

Anything of this sort that you set up will eventually be used by other people,
who don't always know the full ramifications of what they are using. Somewhere
down the line, someone will leak something into the test system. Maybe a user
ID or password. Names of clients. Whatever.

Also, a test system has to be reliably operational. According to Murphy's Law,
someone's thing you depend on on the Internet gonna disappear exactly when a
lot of integration activity starts happening before a release.

Lastly, you should control every aspect of a test tool. Exactly how someone's
SMTP thing handles SMTP could change in subtle ways from one day to the next.

------
jlgaddis
Is this something people would actually pay for? Why not just set up a box
running Postfix with a catch-all address and an outbound block on 25/TCP?

~~~
lagadu
You answered your own question: that is a lot more work than using either this
or one of the purpose-made packages like papercut or smtp4dev.

------
deftnerd
Thanks for keeping it for free. I use mailtrap.io and haven't ever hit their
limits, but having it as a free service to the community is appreciated.

------
welder
Sounds like inbox.py:
[https://github.com/kennethreitz/inbox.py](https://github.com/kennethreitz/inbox.py)

This is the simplest SMTP server you'll ever see. It's asynchronous. One
instance should handle over one thousand emails per second.

------
LinuxBender
Anyone using postfix already has smtp-sink in their arsenal. You already have
a fake SMTP server.

------
richardboegli
I missed the signup button as it was white and the image HD not loaded.

I suggest adding another signup button at the bottom of the page. After I read
the features I scrolled back up to look for a signup button which is when I
noticed it was white as background image had loaded.

------
vmp
I made my own little debugging SMTP server in C# some time ago:
[https://github.com/vmp32k/MailBug/releases](https://github.com/vmp32k/MailBug/releases)

It's not pretty but it works well enough. :)

------
helb
Uh, maybe consider changing the styling/colors of that image slider at the top
of your website: [http://imgur.com/a/EY3sU](http://imgur.com/a/EY3sU)

------
throwasehasdwi
I've been using this for ages, works like a charm
[https://github.com/rnwood/smtp4dev](https://github.com/rnwood/smtp4dev)

------
peppage
Locally you can run papercut
[https://papercut.codeplex.com/](https://papercut.codeplex.com/)

------
tsneed290
Shameless plug

[https://github.com/SpartaSystems/holdmail](https://github.com/SpartaSystems/holdmail)

~~~
barryoneill
Yes - I worked on this as well. Very similar concept to some of the other
solutions here. Self-hosted (keep mail internal, fast) - Invent any email
address you like (†), trap it all here. View it via the app, or query via
REST. Designed to be open, this is really useful when you don't want to have
to setup mailboxes, or deal with the additional header of catch-all
addressing. I'm currently adding attachment support for the next release.

† This comes with the caveat that you don't use PII, because people make
configuration mistakes - but if that's how you do testing, then I'd argue you
have bigger problems in your organization than capturing mail. We use it with
somefakeguy@ourdomain.com,
someotherguy_datetime_from_automatedtest@ourdomain.com, rather than just
sending stuff to _real_ addresses.

------
laxk
Why not?

#sudo python -m smtpd -n -c DebuggingServer localhost:25

Works pretty well for me.

------
mrgreenfur
Anyone seen something like this for webhooks? I want to quickly see the
contents, headers and logs without building the middle-man myself.

~~~
rmetzler
[https://requestb.in/](https://requestb.in/)

~~~
mrgreenfur
thanks!

------
option_greek
honorary mention: [https://10minutemail.com/](https://10minutemail.com/) :)

------
donmb
Is this able to track bounced mails? Then it could be used to verify emails :)

------
zinxq
Mailinator does this too of course (with API)

------
zackify
mailtrap.io?

------
dlsym
Please stop hijacking scrolling. Thankyou.

~~~
pogo77
Sorry, we didn't notice that. The design comes with this feature, but we will
probably change it very soon.

~~~
anonymoushn
Your first slide looks like this over here:
[http://i.imgur.com/2Wzbe3Y.png](http://i.imgur.com/2Wzbe3Y.png)

