Nils Vogels
2006-Dec-09 16:56 UTC
[Dovecot] Recipient delimiters, deliver and SQL databases
Hi! As a new user, I'm trying to set up a postfix + dovecot combination, and so far all is running smoothly. I'm using the guidelines that came with postfix and adjusting them as I go. My user and alias database is stored in MySQL, using the scheme from 'PostfixAdmin' (http://high5.net/page9.html) and I am using the dovecot LDA 'deliver' to drop messages into mailboxes that exist solely as virtual users. Users can login using both pop3 and imap, and retrieve the e-mails sent directly to them, so I'm happy with that. One of the features supported by postfix, and required for my setup is recipient delimiters. Using recipient delimiters, you can basically send extra information in the e-mail address, to maybe deliver the message into subfolders directly, or to run anti-spam software such as TMDA against. When I try to deliver such a message, I get a user unknown: Dec 9 14:25:01 vm-mail postfix/pickup[91477]: 4574A6420: uid=0 from=<root> Dec 9 14:25:01 vm-mail postfix/cleanup[91487]: 4574A6420: message-id=<20061209142501.4574A6420 at vm-mail.mydomain> Dec 9 14:25:01 vm-mail postfix/qmgr[91478]: 4574A6420: from=<root at vm-mail.mydomain>, size=290, nrcpt=1 (queue active) Dec 9 14:25:01 vm-mail dovecot: auth(default): master in: USER 1 user+test at mydomain service=deliver Dec 9 14:25:01 vm-mail dovecot: auth-worker(default): sql(user+test at mydomain): SELECT maildir, 143 AS uid, 143 AS gid FROM mailbox WHERE username = 'user+test at mydomain' AND active = '1' Dec 9 14:25:01 vm-mail dovecot: auth-worker(default): sql(user+test at mydomain): User not found Dec 9 14:25:01 vm-mail dovecot: auth(default): master out: NOTFOUND 1 Dec 9 14:25:01 vm-mail postfix/pipe[91489]: 4574A6420: to=<user+test at mydomain>, relay=dovecot, delay=0.14, delays=0.07/0.03/0/0.04, dsn=5.1.1, status=bounced (user unknown) Relevant snippets from postfix's master.cf: # Dovecot LDA dovecot unix - n n - - pipe flags=DRhu user=dovecot:dovecot argv=/usr/local/libexec/dovecot/deliver -d ${recipient} and postfix's main.cf: virtual_gid_maps = static:143 virtual_mailbox_base = /mail/virtual virtual_minimum_uid = 125 dovecot_destination_recipient_limit = 1 virtual_transport = dovecot virtual_uid_maps = static:143 and dovecot's dovecot.conf: protocol lda { postmaster_address = postmaster at mydomain sendmail_path = /usr/sbin/sendmail auth_socket_path = /var/run/dovecot-auth-master } auth default { passdb sql { args = /usr/local/etc/dovecot-mysql.conf } userdb sql { args = /usr/local/etc/dovecot-mysql.conf } socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } master { path = /var/run/dovecot-auth-master mode = 0600 user = dovecot group = dovecot } } } And offcourse dovecot-mysql.conf: # Database driver: mysql, pgsql driver = mysql # Currently supported schemes include PLAIN, PLAIN-MD5, DIGEST-MD5, and CRYPT. default_pass_scheme = CRYPT # Database options connect = host=myhost dbname=mydb user=myuser password=mypass password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1' user_query = SELECT maildir, 143 AS uid, 143 AS gid FROM mailbox WHERE username = '%u' AND active = '1' #EOF Now, I am pretty sure the problem lies with the %u, expanding to user+test at mydomain, which in some way should become user at mydomain, since the latter is the actual mailbox name of the user, but: how? Thanks in advance, Nils -- Those who desire to give up freedom in order to gain security, will not have, nor do they deserve, either one. ~Benjamin Franklin (American Statesman, Scientist, Philosopher, Printer, Writer and Inventor. 1706-1790)
Marshal Newrock
2006-Dec-09 18:05 UTC
[Dovecot] Recipient delimiters, deliver and SQL databases
On Sat, 09 Dec 2006 17:56:20 +0100 Nils Vogels <nivo+sender+9bb457 at is-root.com> wrote:> One of the features supported by postfix, and required for my setup is > recipient delimiters. Using recipient delimiters, you can basically > send extra information in the e-mail address, to maybe deliver the > message into subfolders directly, or to run anti-spam software such > as TMDA against.Side note: if you use TMDA with what I refer to as the Challenge Response Authentication Protocol, you are a source of spam. Sending responses to users who did not send the original message is backscatter, and will get you blocked. No one wants to deal with your CRAP.> When I try to deliver such a message, I get a user unknown:[snip]> Now, I am pretty sure the problem lies with the %u, expanding to > user+test at mydomain, which in some way should become user at mydomain, > since the latter is the actual mailbox name of the user, but: how?Check the postfix setting recipient_delimiter. -- Marshal Newrock Ideal Solution, LLC - http://www.idealso.com
Jim Horner
2006-Dec-12 17:36 UTC
[Dovecot] Recipient delimiters, deliver and SQL databases
> Now, I am pretty sure the problem lies with the %u, expanding to > user+test at mydomain, which in some way should become user at mydomain, since > the latter is the actual mailbox name of the user, but: how?I think it would be nice if deliver took a -e ${extension} but for now I use this in Postfix: dovecot unix - n n - 10 pipe flags=DORhu user=vuser argv=/usr/local/libexec/dovecot/deliver -d ${user}@${nexthop} My sieve scripts, of course, don't know about the extension so I have to filter accordingly. Jim