Where I said "user virtual" I meant "user vmail". I've not had enough coffee yet.
On 11/23/2019 9:23 AM, Andrew Swartz wrote: > As a proof of concept, I have a setup doing that which I think you are > trying to do: > > ------------------- > table vdomains file:/etc/mail/table_vmail_domains > table vaddr file:/etc/mail/table_vmail_addresses > table vmailstub { '@' = vmail } > listen on em0 > action "deliver_vmail" maildir > "/home/vmail/domains/%{rcpt.domain:lowercase}/%{rcpt.user:lowercase|strip}" > virtual <vmailstub> > match from any for domain <vdomains> rcpt-to <vaddr> action "deliver_vmail" > ------------------- > > I'm using 6.6.0. For clarity I've included only the pertinent conf > lines. This config is successfully delivering the mail to the > pure-virtual users in the desired directory heirarchy > (/home/vmail/domains/example.com/user). The only places these > pure-virtual users exist is in the "vaddr" table and the directory > heirarchy (they are also in an "auth" table for relaying, but I removed > that for clarity). > > It took me a lot of trial and error to come up with the "virtual > <vmailstub>" at the end of the action. It seems like "user virtual" > should go there, but for unclear reasons that yields "** 550 Invalid > recipient"; when I replace "user virtual" with "virtual <vmailstub>" > (which always returns "vmail") the mail is accepted (for users in the > vaddr table) and delivered as desired. Not an elegant solution, but it > works. > > I've not installed/integrated dovecot yet. I'm curious about > suggestions for the best way to integrated dovecot and/or manage users > in such a system. > > > -Andy > > > On 11/23/2019 7:08 AM, Implausibility wrote: >> Hi again. >> >> My mail server has been running fine since last weekend, and I'm trying to >> expand its functionality by including the ability to send and receive mail >> for my list of domains, and for eMail addresses which forward to locally >> defined users -- but I can't seem to get it working, and I think the issue >> is my (mis-)understanding of how the match parameter works... >> >> In order to get virtual users working, I've added three lines to the config: >> >>> table vusers file:/etc/mail/vusers >>> action "vusers" maildir junk virtual <vusers> >>> match from any for domain <domains> rcpt-to virtual <vusers> action "vusers" >> I was able to get mail delivered for local users to my virtual domains >> previously without issue. But I can't get virtual addresses working... >> >> I've tried a half a dozen varieties of the match command, and I keep getting >> 'syntax error', and it doesn't give me any hint as to what exactly the >> problem is. I want to accept eMail from any destination, to the domains >> defined in the domains table, that are sending to recipients listed in the >> vusers table, to deliver them to the maildir for access via Dovecot IMAP. >> >> Any help in getting this working would be appreciated. >> >> Here's my config: >> >>> # $OpenBSD: smtpd.conf,v 1.11 2018/06/04 21:10:58 jmc Exp $ >>> >>> # This is the smtpd server system-wide configuration file. >>> # See smtpd.conf(5) for more information. >>> >>> table aliases file:/etc/mail/aliases >>> table domains db:/etc/mail/domains.db >>> table vusers file:/etc/mail/vusers >>> >>> # To accept external mail, replace with: listen on all >>> # >>> # listen on all >>> >>> action "local_mail" maildir junk alias <aliases> >>> action "vusers" maildir junk virtual <vusers> >>> action "outbound" relay helo mail.example.com >>> >>> match from any for domain <domains> action "local_mail" >>> match for local action "local_mail" >>> match for any action "outbound" >>> >>> pki mail.hottub.ca cert "/etc/ssl/mail.example.fullchain.pem" >>> pki mail.hottub.ca key "/etc/ssl/private/mail.example.key" >>> >>> filter check_dyndns phase connect match rdns regex { '.*\.dyn\..*', >>> '.*\.dsl\..*' } \ >>> disconnect "550 you look like a spammer" >>> >>> filter check_rdns phase connect match !rdns \ >>> disconnect "550 you look like a spammer" >>> >>> filter check_fcrdns phase connect match !fcrdns \ >>> disconnect "550 you look like a spammer" >>> >>> filter senderscore \ >>> proc-exec "filter-senderscore -blockBelow 10 -junkBelow 70 -slowFactor >>> 5000" >>> >>> filter rspamd proc-exec "filter-rspamd" >>> >>> listen on all tls pki mail.example.ca \ >>> filter { check_dyndns, check_rdns, check_fcrdns, senderscore, rspamd } >>> >>> listen on all port submission tls-require pki mail.hottub.ca auth filter >>> rspamd >>> >>> match from any for domain "mail.example.ca" action "local_mail" >>> match from any for domain <domains> rcpt-to virtual <vusers> action "vusers" >>> match for local action "local_mail" >>> >>> match from any auth for any action "outbound" >>> match for any action "outbound" >>> >> >