Tag: Mailcow

  • One Year of Mailcow

    One Year of Mailcow

    I’ve been hosting my personal domain’s email on Mailcow for over a year now after Google apps started charging for their service and I have to say it works pretty good. I had an good architecture to start but needed to iterate on the design of the infrastructure. A few things that changed was I did swap out EFS for a 2nd EBS data volume that was dynamically attached at EC2 boot time. I moved my s3 back backups into glacier to reduce costs. And I did end up needing to upgrade my Ec2 to larger instance, I still need to revisit the metrics on this to determine if it was really necessary. But you know how it is when you break something and the family is using it… you hear about it.

    AWS Hosting

    I do host this on AWS, my reasoning was just keeping my skills sharp. I had originally spin up the stack with Cloudformation to test out some of the latest changes offered in cloudformation but have since converted those scripts to Terraform. Terraform is so simple… there’s no comparison. This is not the cheapest solution, I could host this anywhere or at home but I chose to put it here to continue honing my skills in AWS. Also let’s be honest, AWS is a really solid host.

    Mailcow Pros:

    • It’s stupid simple to update, they have a script that will pull the latest changes from git, pull docker images, restart services and then clean up after itself.
    • It just works, I’ve had no real problems other than one’s I’ve created. If you leave it alone it just runs.
    • Backup and restore works. I’ve only done full backups and restores so I can’t comment on restoring individual messages but I can spin up a empty ec2 instance and bring up my server quickly with a restore from S3.

    Mailcow Cons:

    • It’s a bit bloated, there’s some included things that may not be really needed. Like for instance I like the activesync for my mobile device but honestly I could probably just use IMAP idle.
    • SOGO is ugly and we did have some issues with the calendar. It’d be nice if there was a better solution. I know there is an option to use Nextcloud but I haven’t played with that yet.
    • Documentation could use some work, there were some places that I had to do some extra research and guessing when I was building out my solution.

    Conclusion

    If you want to host your own email, Mailcow just works. There are other less resource intensive solutions out there that have good reviews too, I suggest trying them out and pick what works for you. Now with hind sight being 20/20 would I self host email again? I think so? I’ve learned a lot about email and specifically DKIM and SPF records (I’ll do a whole post about those) and so that’s been a good growing experience. I haven’t lost any email (knock on wood) so that’s good. And honestly the server does just work.

  • Replacing Google Workspaces

    Replacing Google Workspaces

    So with the announcement that my freeloading for email hosting on Google is coming to an end I decided to go down the road of setting up my own email server as I figured since I was going to have to pay for email going forward why not just host it. Is this a good idea? I’m not sure, it seems like there are lots of blog posts that tell you not to host your own email but in my situation I have several custom domains that i was feeding into google with around 20 family freeloaders users and cost became an issue.

    Most of my cloud expertise is in AWS which made it a pretty easy decision to use their services to host my server. Since mailcow is now dockerized this was fairly easy to create an ASG that has one EC2 server. I hosted the data on EFS which allows me to kill off the EC2 instance and it will rebuild itself within a few minutes. And to top it off I am using SES for outbound emails as this allows me to avoid getting my sent emails trapped in spam filters.

    So far there have been very few gotchas, the issues that have come up were my own doing for over thinking the problem. Although once the family starts using the server I’m sure that I’ll need to iterate. My only real fear is loosing data and I’ve been able to test that a few times by completely tearing down the stack and rebuilding and reloading from a backup.

    Next step is I’ll be working on importing the families emails into the server and mailcow uses imapsync under the hood and actually getting some real traffic beyond myself and my emails.