Haven't read your whole email, so I apologize if I'm off base. 

vdelivermail should only go in .qmail-default. It should not go in .qmail-alias 
files. If you're using it there, you will have problems. 

-Tom
(Sent from my phone; forgive my brevity)

On Aug 5, 2012, at 1:13 PM, Luke vpopmail <luke+lists+vpopm...@hiled.biz> wrote:

> 
> Hi Guys,
> 
> I've been a Qmail users since Peter Samuel at SLUG.org.au did his talk a
> long long time ago.
> 
> Now down to business. I have an issue with vpopmail failing with
> virtualmin, a webmin spin off..
> http://www.virtualmin.com/node/22970
> 
> Basically what happening is this, virtualmin is configuring
> |/var/vpopmail/bin/vdelivermail user@domain for aliases and it's breaking.
> Why it's breaking I don't exactly know why, because according to the valias
> code pipes are supported.
> 
> I seek confirmation on the mysql implementation of vmail aliases.
> 
> * multiple aliases for the same domain are supported (true)
> * if qmail extensions are used (user-ext@domain) in aliases they will be
> used INSTEAD of the user's alias (?)
> * qmail extensions are supported on aliases if there is not a better match
> (see above)
> ? how do qmail extensions on aliases flow through to the user accounts ?
> * pipes are supported (true) (see caveat)
> * &forwarding is supported - in order to support non-standard email naming
> conventions i.e. dot qmail compliancy (true?)
> * mbox delivery is not supported (true)
> * if no hostname is provided on alias it will use
> /var/qmail/control/defaultdelivery (true? seems to be using
> /var/qmail/bin/qmail-inject at some point noenvhost is ignored)
> * aliases are processed before users (true)
> * if the database is down, a soft delivery delay occurs (true)
> * mail loops for valiases only are detected (true) (not for user accounts
> bouncing back to a valias??)
> * delivery to maildir folders are supported if the full path is specified
> (true)
> * delivery to maildir folders are supported for relative paths in relation
> to vpopmail's home directory defined in /etc/passwd (true?) i.e. ./domains/
> hiled.biz/user/.maildir/ is prepended by vpopmail's home directory
> * a maildir folder needs a ./ or a / at the beginning of the line to be
> processed (true/false?)
> * anything else that should go into the readme file thats not there....
> 
> I do hope some people can look at that virtualmin ticket to theorize why
> vdelivermail doesn't like calling itself to do another delivery.
> The issue doesn't affect me, it's just that some other setup's and indeed
> virtualmin's non-sql-backend setups are all doing it this way.
> It did take day to hunt down, but finally my pain is over (i never thought
> of checking the valias database)
> 
> I'm also petitioning virtualmin to be fixed fixed to work with gentoo's
> defacto .maildir defaultdelivery standard for qmail. They had hardcoded
> ./Maildir in their source.
> 
> Speaking of the maildrop patch for virtualmin, I don't like it in it's
> current form. It's messy.
> I think that vpopmail should support this setup instead.
> 
> 1) If a domain is not owned by vpopmail:vckpwd/vpopmail still configure
> /var/qmail/users/assign to use uid/gid 89 (vpopmail) - see below, this
> should be configured by a #ifdef MAILDROP
> 2) Add maildrop to your system as SUID with it set up that vpopmail is a
> trusted user. --configure-trusted-users=x,y,z,vpopmail in maildrop
> configure script.
> [ Due to the amount of personal information vpopmail system could release,
> it should be pretty locked down anyway if any system administrator is worth
> his salt.]
> 3) I patched vdelivermail to spawn vpopmail in LDA mode.
> --- vdelivermail.c.orig    2012-08-03 06:51:43.397294158 +0000
> +++ vdelivermail.c    2012-08-03 07:56:38.802799846 +0000
> @@ -409,7 +409,7 @@
> #ifdef MAILDROP
>       if ( limits.disable_maildrop==0 && vpw!=NULL &&
>            !(vpw->pw_gid & NO_MAILDROP) ) {
> -    sprintf(maildrop_command, "| preline %s", MAILDROP_PROG);
> +    sprintf(maildrop_command, "| preline %s -a -d %s@%s", MAILDROP_PROG,
> TheUser, TheDomain);
>     run_command(maildrop_command);
>     DeleteMail = 1;
>     return(0);
> This way maildrop sets up the home directory, the maildir directory and the
> appropriate user ID tself. You can still have site-wide configuration by
> /etc/maildroprc
> 4) To make point #3 working you need courier-authlib working. They have
> just recently the removed vpopmail authentication backend. However SQL /
> LDAP or whatever vpopmail uses can be queried. Here is an an example for
> mysql.
> 
> /etc/courier/authlib/authmysqlrc:
> #address of mysql server
> MYSQL_SERVER            localhost
> 
> #login for mysql
> MYSQL_USERNAME          vpopmail
> 
> #password for mysql
> MYSQL_PASSWORD          secret
> # of course i don't use the default password ^%%
> #path to mysql socket
> MYSQL_SOCKET            /var/run/mysqld/mysqld.sock
> 
> #mysql port
> #MYSQL_PORT              3306
> 
> #mysql options (leave alone)
> MYSQL_OPT               0
> 
> #name of mysql database
> MYSQL_DATABASE          vpopmail
> MYSQL_USER_TABLE        vpopmail
> #mysql charset to use
> MYSQL_CHARACTER_SET     utf8
> 
> #default domain to use, when no domain is supplied by user
> DEFAULT_DOMAIN          hiled.biz
> 
> #MYSQL_CRYPT_PWFIELD     pw_passwd
> #MYSQL_CLEAR_PWFIELD    pw_clear_passwsd
> #MYSQL_LOGIN_FIELD       CONCAT(pw_name, '@', pw_domain)
> #MYSQL_NAME_FIELD        pw_gecos
> #MYSQL_HOME_FIELD        pw_dir
> #MYSQL_QUOTA_FIELD       pw_shell
> #MYSQL_UID_FIELD
> #ISNUMERIC(pw_shell) AS quota,
> 
> 
> MYSQL_SELECT_CLAUSE     SELECT CONCAT(pw_name, '@', pw_domain) AS username,
> \
>                        pw_passwd AS cryptpw, \
>                        pw_clear_passwd AS clearpw, \
>                        if (pw_uid = '0','89',pw_uid) AS uid, \
>                        if (pw_uid = '0','89',pw_gid) AS gid, \
>                        pw_dir AS home, \
>                        CONCAT(pw_dir, '/.maildir/') AS maildir, \
>            if (pw_shell = 'NOQUOTA', '', pw_shell) AS quota, \
>                        pw_gecos AS fullname, \
>                        'disablewebmail=0,disablepop3=0,disableimap=0' AS
> options \
>                        FROM vpopmail  WHERE \
>                        pw_name = '$(local_part)' AND pw_domain =
> '$(domain)';
> 
> MYSQL_ENUMERATE_CLAUSE  SELECT CONCAT(pw_name, '@', pw_domain) AS
> username,             \
>                        pw_passwd AS cryptpw, \
>                        pw_clear_passwd AS clearpw, \
>                        if (pw_uid = '0','89',pw_uid) AS uid, \
>                        if (pw_uid = '0','89',pw_gid) AS gid, \
>                        pw_dir AS home, \
>                        CONCAT(pw_dir, '/.maildir/') AS maildir, \
>            if (pw_shell = 'NOQUOTA', '', pw_shell) AS quota, \
>                        pw_gecos AS fullname, \
>                        'disablewebmail=0,disablepop3=0,disableimap=0' AS
> options \
>                        FROM vpopmail;
> 
> MYSQL_CHPASS_CLAUSE     UPDATE vpopmail \
>            SET pw_clear_passwd='$(newpass)', \
>                pw_passwd='$(newpass_crypt)' \
>            WHERE pw_name='$(local_part)' \
>            AND pw_domain = '$(domain)' ;
> 
> I think pw_gid should be hardcoded as 89, though it shouldn't matter as all
> mail is umasked 007 anyway.
> 
> As you can see it works.
> crm authlib # authtest u...@hiled.biz
> Authentication succeeded.
> 
>     Authenticated: u...@hiled.biz  (uid 89, gid 89)
>    Home Directory: /var/vpopmail/domains/hiled.biz/user
>           Maildir: /var/vpopmail/domains/hiled.biz/user/.maildir/
>             Quota: 536870912S
> 
> Should I have a / on the end of the .maildir in maildrop? I've seen
> examples of it not there.
> Now I can have some scripting (per site and per user) before the real LDA -
> from dovecot gets called. No messy configuration in vpopmail either.
> 
> What do you think? Can the maildrop patch be updated to be less of a hack
> and more of a real LDA, to have it called the same way it is from courier /
> postfix?
> 
> Cheers,
> 
> Luke
> 
> 
> 

!DSPAM:501ebb4834211568917148!

Reply via email to