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!
Dovecot + Postfix + Rspamd can do it. Instead of pulling emails you can simply forward those providers to your homeserver account. You may also setup Postfix in a way that would allow you to use our @gmail @hotmail addresses as "from" addresses / aliases to your local account and it will automatically submit the email through the provider SMTP server when you send something.
If you really want to pull email instead of setting up forwards (have your server offline more time and whatnot) there are a few options:
- https://www.fetchmail.info/ - the classic tool for the job
- https://github.com/getmail6/getmail6 - another classic solution
- https://github.com/mback2k/go-getmail - probably what I would use today
To route the outgoing email through the right provider / external SMTP server based on the "from" address you may configured it like this:
main.cf:
smtp_sasl_auth_enable = yes
smtp_sender_dependent_authentication = yes
smtp_sasl_password_maps = mysql:/etc/postfix/virtual/mysql-external-alias-credentials.cf
sender_dependent_relayhost_maps = mysql:/etc/postfix/virtual/mysql-external-alias-relay-hosts.cf
smtp_sasl_security_options = noanonymous
mysql-external-alias-credentials.cf:
user = XXXXX
password = XXXXXX
hosts = 127.0.0.1
dbname = mailserver
query = SELECT concat(relay_user, ':', relay_passwd) AS credential FROM `Virtual_Alias_External` WHERE alias='%s' AND active = 1;
mysql-external-alias-relay-hosts.cf:
user = XXXXX
password = XXXXXX
hosts = 127.0.0.1
dbname = mailserver
query = SELECT relay_host AS transport FROM `Virtual_Alias_External` WHERE alias='%s' AND active = 1;
MySQL table structure:
CREATE TABLE `Virtual_Alias_External` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`alias` varchar(70) NOT NULL,
`owner` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`active` tinyint(1) NOT NULL DEFAULT 0,
`relay_host` varchar(70) NOT NULL DEFAULT '',
`relay_user` varchar(70) NOT NULL,
`relay_passwd` varchar(70) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT;
Create an entry like this:
alias: your-emai@gmail.com
owner: local-email-address@homeserver.example.org
active: 1
relay_host: [smtp.gmail.com]:587
relay_user: your-emai@gmail.com
relay_passwd: your-gmail-password-or-app-password
Now when you send and email and the from
is set as your-emai@gmail.com
Postfix will route the email through Gmail's SMTP server with credential stored on that table. If done correctly (smtpd_sasl_authenticated_header = no
) no references to local-email-address@homeserver.example.org
will show up on the email headers.
Wow! Thanks for elaborating! I‘ll look into this! Looks like a ton of useful advice.
Oh man. If I could find a way to stop the phishing emails, I would absolutely love it.
No idea why exchange consistently lets through emails asking to change exchange passwords? Surely they would be the easiest to seperate out