On Fri, Dec 03, 2021 at 06:11:27PM -0500, bobby <[email protected]> wrote:
> I stood up my server using these instructions from this website, which have > gotten me VERY far. However, I'm at a deviation point. I'd like to have > virtual users (and not require local unix accounts for those "users"), and > then possibly even forward those emails to a real user, effectively > masking/masquerading. > https://www.linuxbabe.com/mail-server/setup-basic-postfix-mail-sever-ubuntu > I noticed on her site, she has a section for: > Create Virtual Mailboxes with PostfixAdmin (Ubuntu 18.04, Ubuntu 20.04) > Trying to avoid a gui when/where possible, for security reasons. I am > running 20.04 by the way. Just noticed the following bullet point actually > on her site: > "command-line client postfixadmin-cli for those who don’t want to click > around in a web interface", which is probably what I'd do, or would like to > do. But this is what caught my attention: " > Note: Once you finish part 3, you can no longer use local Unix accounts as > email addresses. You must create email addresses from the PostfixAdmin web > interface." So I'm sure completing these instructions, would break my > current setup. > What is the best way to accomplish this? I've been playing around with the > mysql path - thoughts on this approach? Any good tutorials that anyone can > recommend, that use dovecot, postfix, and imap? > I should note, I'd be the only user of this mail server. I think that using additional software for managing virtual domains/users is unnecessary unless you have large numbers of either, or if they change frequently. I have a small number of virtual domains and users and manage it manually just with Postfix's configuration files. It looks roughly like this: /etc/postfix/main.cf: virtual_alias_domains = a.org b.org c.org virtual_alias_maps = hash:/etc/postfix/virtual virtual_mailbox_domains = virt.a.org virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_mailbox_base = /var/vmailboxes # uid 109 = user dovecot virtual_minimum_uid = 109 virtual_uid_maps = static:109 # gid 115 = group dovecot virtual_gid_maps = static:115 /etc/postfix/virtual: a.org anything [email protected] localuser [email protected] [email protected] [email protected] [email protected] b.org anything [email protected] root [email protected] root [email protected] [email protected] c.org anything [email protected] root [email protected] root [email protected] [email protected] /etc/postfix/vmailbox: alex.a.org [email protected]/Maildir/ sam.b.org [email protected]/Maildir/ jude.c.org [email protected]/Maildir/ The example above includes delivery to local users, forwarding to remote users, and to local dovecot accounts. My setup is a bit different because one of the virtual domains has lots of addresses, and it is added to frequently, so it has its own separate virtual database that I manage with my own scripts. Doing things manually will give you the flexibility you are after. And once you are comfortable doing it manually, you can probably write your own scripts to automate parts that would benefit from automation, without having to completely adopt someone else's model. The lines containing "anything" aren't necessary. If they are there, then you don't need to set virtual_alias_domains in main.cf (by default, Postfix will find them in the virtual database). If they aren't there, then you do need to set virtual_alias_domains in main.cf to tell Postfix what the virtual domains are. Be warned that, if you forward to remote users, you will run into bounces when the sending domain uses strict SPF (-all). In that case, you will want to setup SRS-enabled forwarding with postsrsd and postforward. That involves aliasing forwarded addresses to a local entry in /etc/aliases that invokes postforward to re-submit the mail using SRS addresses obtained from postsrsd. For example, to change the [email protected] address to do this, its line in /etc/postfix/virtual would change to: [email protected] kim And /etc/aliases would contain something like this: kim: "/usr/local/bin/postforward [email protected]" Using postsrsd on its own without postforward rewrites all envelope sender addresses whether they are forwarded or not which seems wrong. And of course, don't forget to: postmap hash:/etc/postfix/virtual postmap hash:/etc/postfix/vmailbox whenever those files are modified. cheers, raf
