Selfhosted
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.
Rules:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam posting.
-
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.
-
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
-
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
-
No trolling.
Resources:
- selfh.st Newsletter and index of selfhosted software and apps
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
view the rest of the comments
What's the point of hosting a local server in this case, instead of just using a mail client?
maybe multiple mail clients are configured to connect to a local server in an office while that server is configured to outside world and also fetches each mail only once. changing of outisde world provider then does not make you reconfigure all mail clients, but only your central once.
I would say something similar if not exactly.
I'm just looking forward to de-googling my life before my kids are old enough to get Hooked on that shit themselves.
My basic idea is that maybe I can't or shouldn't host my own email server. But 15gig limits with constant nagging to pay up, so gmail is not the answer. That gets old quick. I want to just download the files into a central device that my wife and I have access to. But that has been thus far technically obfuscated. I'm not sending thousands of emails per day, just a family level of correspondence.
Ideally my wife and I would login thru our phones to send and receive emails from a common email space that only lives at home. The emails would be routed to the outside entity who would do the actual sending and receiving. I have some basic things that I'm starting to like...email aliases and having my own email domain.
I currently have my own domain on cloud flare but they don't proxy email servers. So here I be. I want for example to use e-mail like this:
Basic form: notgoogle.com
[email protected]
Stacked not google.com
Alias:
[email protected]
One time use or specific use:
[email protected]
I already tried serving my own server and all this was possible. But it was insecure in that you can easily go find my IP address and my real address. I don't want that, don't really mind if someone knows it, but I don't want to be spearphished. And so that's where my desires for a local server that not my wife and I can access and use like gmail but safely come from.
Rant: In general, oh God! Are we fucking retarded? I have a 2 TB disk, I got high speed internet... A rando in China can call my phone but somehow I can't get a rando to send me email? There's something wrong with that picture. Or maybe I should do exactly what I do with my phone number... Not use it at all unless it's family. You can spoof phone numbers, voices and emails. Maybe I should setup a Lemmy instance instead and just use this as a form of communication. The only problems being that my computer sometimes goes down due to power failure or IP change or some other reason, and nobody else would want to use my server...like the kids school or the DMV etc. Anyhoo...
for the 15gb limit it would be sufficient to just get a VM with enough space (in a datacenter or at home, maybe a rapsberry pi) and run an imap , an mta and something to fetch the mails from google so that they are archived and dont fill in the limited space. i think if i were you, i would begin with just that cz that is the annoying thing and it is always possible to change the setup as wished once it is under your control.
i personally would not want to use mailcow but dovecot, postfix and fetchmail directly. fetchmail gets the mails from google and places it into dovecots imap storage while postfix would be used to send mails through google to the outside world using your google credentials. then you'ld have google as the external service to begin with and your server to actually host the emails and configure the phones to send emails through it or directly through google but just get the emails from it and save sent mails there. later you could add another nongoogly service so that fetchmail gets these emails too and just extend the setup.
if you have that, you can send/receive emails when you are at home.
but before downloading (moving) the first mails from the google storage to there i would ensure that an (incremental) backup is already running well and automatically just in case of disk failures.
i have pretty good experience with giving every contact a separate email alias under my domain to communicate with me. my email aliases usually are like -@mydomain.tld
that is for a newsletter from somecoolpage.com it would look like [email protected]
it is near to impossible to guess that random number so i get nearly no emails from other than my real contacts cz only they know a valid address. that alias is only used for this one thing, a contact, a shop even a friend (or group of friends). mails go all into the same inbox but when i receive spam or phishing on it, i 1. know who has leaked my data and 2. i can change the alias to a new number, delete the old alias and thus stop any future spam on that address. this way i have no extra spam filters but also near to no spam.
However your ip address can be found in any email you send in the received headers. is that what you want to prevent, or just the public ip when running an internet facing mailserver with mx records pointing to it ? with ip changes beeing a thing i guess you tried to run the mailserver behind your home internet connection, nonstatic ips are bad for email, you could get a ipv6 tunnel from hurricane electric (still free?) then have static ipv6 addresses, but google afair does not allow you to send them emails via ipv6 and thus i blocked them so they cannot send me emails via ipv6 too, so i think communicating to google victims might be a problem due to google lacking behind current tech. so your idea to use a third party service fits perfectly if you dont want to run your own public mailserver. do you have a vpn to your home network to use the homeserver from remote?
This is exactly the setup I want. Man, I got thousands of notifications and spam pretending to be real notifications I'm tired of it.
I don't actually want to need to VPN into my home network. I want to use the Mozilla K9 app and login like that if possible. So we would login to the server via some sort of app, in the background the server would send and receive emails and so we would never again touch gmail directly. And exactly, we could add a side service to transition over seamlessly. And how you describe the email addresses for individual purpose is excellent. Spam? Want me to unsubscribe? How about I delete the email address, and you waste your time emailing? I love it!
it actually has yet another upside. when i do receive spam or phishing on such an alias, i go to the portal or shop, change my emailadress to a newly created alias and then i also write an email to the service describing that i got a spam or phishing mail to the email alias, only they and me know about, i also cite how many other spam mails i got for other aliases (usually zero) and suggest that the data was lost on rather their side, not mine. In the past companies usually ofzen "assumed" that their customers used the email elsewehere and the leak on their side was just a hypothesis easily denyable, but only two parties knowing about that address while only that particular address was leaked seems somewhat more convincing to them. of course it could be anything their webserver, their cloud provider, some third party their cloud provider uses, some fourth party their cloud providers provider uses , their email provider, newsletter provider, proxies like cloudflare a.s.o., but as i host my emails by myself, there is not other party involved on my side (besides the VM provider) but at least not without then leaking "all" of my other aliases at the very same time. that happened a few times until now over the years and it really feels great beeing on the "capable to prevent and react" side of it =) that is you really know who failed then, you can offer that little help that they know that too and can prevent their one-time-leak from annoying you more than once.
also interestingly: it was until now always the "good" looking companies that failed this way, not those a bit dodgy looking webpages where i only subscribed to their newsletter cause i could turn off spam anyway.
however i had the idea of parsing logs for all deleted aliases so that i get statistics of how long spammers keep trying after they got 'unknown user' first time. but i didnt implement that yet.
the vpn login to my home is one way of reaching the email account on the home server. the way i do it is that my VM -the internetfacing mail server - actually has a vpn server and my home server logs into that. on the VM i run a haproxy with port 443 open anyway for similar things. the haproxy determines what connection it is by SNI value and decides what to do with it. for smtp and imap i use ssl as encryption with client certificate (easy-rsa same i use for vpn). one of which is terminated at the haproxy checking client cercificate there, the other is terminated in the homeserver, but both connections go throug haproxy and through vpn to the homeserver and thats as stable as my internet connection at home, where the ip changes sometimes. you maybe would not have the VM as emailserver, but i guess you want to check emails also when not at home, thats why i asked for vpn. i am using k-9 and it works, only thing missing is that before answering an email with the correct outgoing address, i have to setup that address on the client first, thats not automatically, i've heared other clients exist that can answer directly using the from-address for which an email was sent to. another issue with my concept is, that setting up each emailaddress at the server IS work (same with moving already existing accounts to new aliaseses). i currently have a 'tables' app table on nextcloud that i can manage from my cellphone and a cronjob checks database for changes and adjusts postfix virtual_alias_maps table on the mx, so that i have a ui to do so easily when not at home, that comes in handy whenever someone asks me for my email address. another concept (that i never did) was just having some email addresses ready to use at hand, so i dont have to set them up when not having access to the server. however having separate emails per portal, shop newsletter a.s.o. also documented where i have accumulated accounts over the decades (and that were a lot)
there is one thing i came up with quite late, the email address that i use to login to my server and also the address that fetchmail uses to place emails into the imap store should not be reachable from the internet as it would be more work to change it on arrival of spam. in your setup this might be the "main" address of that emailservices account, on my setup its the address of the local users mailbox. however as postfix uses that address in the value part of virtual_alias_maps table, it needs to know the address and its also in virtual_mailbox_maps table thus reachable from the internet. in my new setup it is also an address like -@domain.tld so it is not guessable by spambots and changeable of course too.
when the server is at home you can login to it with k-9 when at home for sure. but for connecting from abroad you need some sort of connection like using dyn.io or such which also could be a proxy like cloudflare from cellphone perspectice but that would not work like i do it because in my setup where i terminate one protocols ssl at the haproxy (which would do what imho roughly cloudflare would to) the connection to my homeserver is then without encryption which is ok for me as its through "my" vpn, but with cloudflare i guess thats rather not possible as you said as the protocol is not even http. haproxy instead can just terminate ssl and proxy raw tcp then, so that even ssh could go through haproxy to the local machine so that no extra port is needed to be open (thats actually one of my backup strategies to gain ssh access to the VM when other connections become somehow impossible. i also use knockd and a selfmade https based mechanism to open the ssh port for my current ip just in case.
something like dyn.io has advantages, you would not have to use vpn on the cellphone, but ip changes make you connect to third party IPs regulary and also your home network would have at least one extra port open to the world which i would rather like to prevent - if not for security, then at least for less logs caused by scanners. i prefere the stealth mode of openvpn/udp using that extra ta key, but using port 443 (which also is very likely to be accessible from most networks that want to restrict their users available protocols) to pipe things through haproxy is imho the second-best stealth available, also just random https scans without correct domains can be blocked before the ssl connection even starts only using the sni value.
if you have a VM in a datacenter i'ld suggest to use that as a vpn, make your homeserver login to it and your cellphone doesn't need a vpn then.
ovh.com sometimes has offers for small VMs for just 1€ / month for new customers, it is also limited to the first year, but a pretty good offer anyway and really not too much for just experimenting a bit.
If you mainly want to "hide" your IP, you can't. Look at the headers of any message. It'll still show the original source IP, which will be yours.
For the rest of the time I'd recommend getting a spam filtering service. Mimecast, ProofPoint, Barracuda, etc.
Messages sent to you go to the filter, which then forwards the message over to your mail server. Outbound you configure your server to use the filter as a smart host. These filters will also buffer messages if your mail server is offline. So if the server is down, the filter holds on to messages and retries delivery later when your server is back up (within reason).