From a6c5592541de012dd7730eda243f75e1ea44d2d8 Mon Sep 17 00:00:00 2001 From: avengerx Date: Sun, 1 Jul 2012 01:17:20 -0300 Subject: [PATCH 1/6] Improve user/group name handling on configuration script generation. --- lib/configfiles/freebsd.inc.php | 25 +++++++++++++++++++++---- lib/configfiles/gentoo.inc.php | 21 +++++++++++++++++++-- lib/configfiles/hardy.inc.php | 33 +++++++++++++++++++++++++-------- lib/configfiles/lenny.inc.php | 33 +++++++++++++++++++++++++-------- lib/configfiles/lucid.inc.php | 33 +++++++++++++++++++++++++-------- lib/configfiles/precise.inc.php | 33 +++++++++++++++++++++++++-------- lib/configfiles/sle10.inc.php | 25 +++++++++++++++++++++---- lib/configfiles/squeeze.inc.php | 33 +++++++++++++++++++++++++-------- lib/configfiles/suse11.inc.php | 31 ++++++++++++++++++++++++------- 9 files changed, 210 insertions(+), 57 deletions(-) diff --git a/lib/configfiles/freebsd.inc.php b/lib/configfiles/freebsd.inc.php index 3aaad345..3d8f6b47 100644 --- a/lib/configfiles/freebsd.inc.php +++ b/lib/configfiles/freebsd.inc.php @@ -15,6 +15,23 @@ * */ +// Try to guess user/group from settings' email UID/GID +$vmail_user=posix_getpwuid($settings['system']['vmail_uid']); +$vmail_group=posix_getgrgid($settings['system']['vmail_gid']); + +/* If one of them are not set, call it 'vmail' and suggest creating user/group + * in scripts. */ +if ($vmail_user === false) { + $vmail_username="vmail"; +} else { + $vmail_username=$vmail_user['name']; +} +if ($vmail_group === false) { + $vmail_groupname="vmail"; +} else { + $vmail_groupname=$vmail_group['name']; +} + return Array( 'freebsd' => Array( 'label' => 'FreeBSD', @@ -89,10 +106,10 @@ return Array( 'make install' ), 'commands_2' => Array( - 'pw groupadd vmail -g '.$settings['system']['vmail_gid'], - 'pw useradd vmail -u '.$settings['system']['vmail_uid'].' -g '.$settings['system']['vmail_gid'].' -s/sbin/nologin -d/dev/null', + ($vmail_group === false) ? 'pw groupadd ' . $vmail_groupname . ' -g '.$settings['system']['vmail_gid'] : '', + ($vmail_user === false) ? 'pw useradd ' . $vmail_username . ' -u '.$settings['system']['vmail_uid'].' -g '.$settings['system']['vmail_gid'].' -s/sbin/nologin -d/dev/null' : '', 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'chmod 0750 ' . $settings['system']['vmail_homedir'] ), 'commands_3' => Array( @@ -180,7 +197,7 @@ return Array( ), 'commands_2' => Array( 'echo "dovecot unix - n n - - pipe - flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient}" >> /usr/local/etc/postfix/master.cf', + flags=DRhu user='.$vmail_username.':'.$vmail_groupname.' argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient}" >> /usr/local/etc/postfix/master.cf', 'chmod 0640 /usr/local/etc/dovecot-sql.conf' ), 'restart' => Array( diff --git a/lib/configfiles/gentoo.inc.php b/lib/configfiles/gentoo.inc.php index 6c8a8af7..f87c4232 100644 --- a/lib/configfiles/gentoo.inc.php +++ b/lib/configfiles/gentoo.inc.php @@ -17,6 +17,23 @@ * */ +// Try to guess user/group from settings' email UID/GID +$vmail_user=posix_getpwuid($settings['system']['vmail_uid']); +$vmail_group=posix_getgrgid($settings['system']['vmail_gid']); + +/* If one of them are not set, call it 'vmail' and suggest creating user/group + * in scripts. */ +if ($vmail_user === false) { + $vmail_username="mail"; // Gentoo uses 'mail' user/group +} else { + $vmail_username=$vmail_user['name']; +} +if ($vmail_group === false) { + $vmail_groupname="mail"; // Gentoo uses 'mail' user/group +} else { + $vmail_groupname=$vmail_group['name']; +} + return Array( 'gentoo' => Array( 'label' => 'Gentoo', @@ -126,7 +143,7 @@ return Array( 'echo "mail-mta/postfix -dovecot-sasl sasl" >> /etc/portage/package.use', 'emerge -av postfix', 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_user['name'].':'.$vmail_group['name'].' ' . $settings['system']['vmail_homedir'], 'chmod 0750 ' . $settings['system']['vmail_homedir'], 'mv /etc/postfix/main.cf /etc/postfix/main.cf.gentoo', 'touch /etc/postfix/main.cf', @@ -169,7 +186,7 @@ return Array( 'echo "mail-mta/postfix dovecot-sasl -sasl" >> /etc/portage/package.use', 'emerge -av postfix', 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_user['name'].':'.$vmail_group['name'].' ' . $settings['system']['vmail_homedir'], 'chmod 0750 ' . $settings['system']['vmail_homedir'], 'mv /etc/postfix/main.cf /etc/postfix/main.cf.gentoo', 'touch /etc/postfix/main.cf', diff --git a/lib/configfiles/hardy.inc.php b/lib/configfiles/hardy.inc.php index e93cbe65..2a85282c 100644 --- a/lib/configfiles/hardy.inc.php +++ b/lib/configfiles/hardy.inc.php @@ -17,6 +17,23 @@ * */ +// Try to guess user/group from settings' email UID/GID +$vmail_user=posix_getpwuid($settings['system']['vmail_uid']); +$vmail_group=posix_getgrgid($settings['system']['vmail_gid']); + +/* If one of them are not set, call it 'vmail' and suggest creating user/group + * in scripts. */ +if ($vmail_user === false) { + $vmail_username="vmail"; +} else { + $vmail_username=$vmail_user['name']; +} +if ($vmail_group === false) { + $vmail_groupname="vmail"; +} else { + $vmail_groupname=$vmail_group['name']; +} + return Array( 'ubuntu_hardy' => Array( 'label' => 'Ubuntu 8.04 (Hardy)', @@ -127,13 +144,13 @@ return Array( 'postfix_courier' => Array( 'label' => 'Postfix/Courier', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', + 'mkdir -p ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'apt-get install postfix postfix-mysql libsasl2-2 libsasl2-modules libsasl2-modules-sql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', - 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', @@ -188,13 +205,13 @@ return Array( 'postfix_dovecot' => Array( 'label' => 'Postfix/Dovecot', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', + 'mkdir -p ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'apt-get install postfix postfix-mysql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', - 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', diff --git a/lib/configfiles/lenny.inc.php b/lib/configfiles/lenny.inc.php index 006c4665..28bf6446 100644 --- a/lib/configfiles/lenny.inc.php +++ b/lib/configfiles/lenny.inc.php @@ -17,6 +17,23 @@ * */ +// Try to guess user/group from settings' email UID/GID +$vmail_user=posix_getpwuid($settings['system']['vmail_uid']); +$vmail_group=posix_getgrgid($settings['system']['vmail_gid']); + +/* If one of them are not set, call it 'vmail' and suggest creating user/group + * in scripts. */ +if ($vmail_user === false) { + $vmail_username="vmail"; +} else { + $vmail_username=$vmail_user['name']; +} +if ($vmail_group === false) { + $vmail_groupname="vmail"; +} else { + $vmail_groupname=$vmail_group['name']; +} + return Array( 'debian_lenny' => Array( 'label' => 'Debian 5.0 (Lenny)', @@ -128,13 +145,13 @@ return Array( 'postfix_courier' => Array( 'label' => 'Postfix/Courier', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', + 'mkdir -p ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'apt-get install postfix postfix-mysql libsasl2-2 libsasl2-modules libsasl2-modules-sql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', - 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', @@ -189,13 +206,13 @@ return Array( 'postfix_dovecot' => Array( 'label' => 'Postfix/Dovecot', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', + 'mkdir -p ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'apt-get install postfix postfix-mysql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', - 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', diff --git a/lib/configfiles/lucid.inc.php b/lib/configfiles/lucid.inc.php index 4560790c..0d4fc727 100644 --- a/lib/configfiles/lucid.inc.php +++ b/lib/configfiles/lucid.inc.php @@ -17,6 +17,23 @@ * */ +// Try to guess user/group from settings' email UID/GID +$vmail_user=posix_getpwuid($settings['system']['vmail_uid']); +$vmail_group=posix_getgrgid($settings['system']['vmail_gid']); + +/* If one of them are not set, call it 'vmail' and suggest creating user/group + * in scripts. */ +if ($vmail_user === false) { + $vmail_username="vmail"; +} else { + $vmail_username=$vmail_user['name']; +} +if ($vmail_group === false) { + $vmail_groupname="vmail"; +} else { + $vmail_groupname=$vmail_group['name']; +} + return Array( 'ubuntu_lucid' => Array( 'label' => 'Ubuntu 10.04 (Lucid)', @@ -128,13 +145,13 @@ return Array( 'postfix_courier' => Array( 'label' => 'Postfix/Courier', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', + 'mkdir -p ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'apt-get install postfix postfix-mysql libsasl2-2 libsasl2-modules libsasl2-modules-sql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', - 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', @@ -189,13 +206,13 @@ return Array( 'postfix_dovecot' => Array( 'label' => 'Postfix/Dovecot', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', + 'mkdir -p ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'apt-get install postfix postfix-mysql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', - 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', diff --git a/lib/configfiles/precise.inc.php b/lib/configfiles/precise.inc.php index e2ac72aa..9a1a7ec1 100644 --- a/lib/configfiles/precise.inc.php +++ b/lib/configfiles/precise.inc.php @@ -17,6 +17,23 @@ * */ +// Try to guess user/group from settings' email UID/GID +$vmail_user=posix_getpwuid($settings['system']['vmail_uid']); +$vmail_group=posix_getgrgid($settings['system']['vmail_gid']); + +/* If one of them are not set, call it 'vmail' and suggest creating user/group + * in scripts. */ +if ($vmail_user === false) { + $vmail_username="vmail"; +} else { + $vmail_username=$vmail_user['name']; +} +if ($vmail_group === false) { + $vmail_groupname="vmail"; +} else { + $vmail_groupname=$vmail_group['name']; +} + return Array( 'ubuntu_precise' => Array( 'label' => 'Ubuntu 12.04 (Precise)', @@ -128,13 +145,13 @@ return Array( 'postfix_courier' => Array( 'label' => 'Postfix/Courier', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', + 'mkdir -p ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'apt-get install postfix postfix-mysql libsasl2-2 libsasl2-modules libsasl2-modules-sql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', - 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', @@ -189,13 +206,13 @@ return Array( 'postfix_dovecot' => Array( 'label' => 'Postfix/Dovecot', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', + 'mkdir -p ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'apt-get install postfix postfix-mysql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', - 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', diff --git a/lib/configfiles/sle10.inc.php b/lib/configfiles/sle10.inc.php index ef03cd05..94f3c8f0 100644 --- a/lib/configfiles/sle10.inc.php +++ b/lib/configfiles/sle10.inc.php @@ -17,6 +17,23 @@ * */ +// Try to guess user/group from settings' email UID/GID +$vmail_user=posix_getpwuid($settings['system']['vmail_uid']); +$vmail_group=posix_getgrgid($settings['system']['vmail_gid']); + +/* If one of them are not set, call it 'vmail' and suggest creating user/group + * in scripts. */ +if ($vmail_user === false) { + $vmail_username="vmail"; +} else { + $vmail_username=$vmail_user['name']; +} +if ($vmail_group === false) { + $vmail_groupname="vmail"; +} else { + $vmail_groupname=$vmail_group['name']; +} + return Array( 'sle_10' => Array( 'label' => 'SUSE Linux Enterprise 10', @@ -71,11 +88,11 @@ return Array( 'usr_lib_sasl2_smtpd.conf' => '/usr/lib/sasl2/smtpd.conf' ), 'commands' => Array( - 'mkdir -p /var/spool/postfix/etc/pam.d', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], + 'mkdir -p /var/spool/postfix/etc/pam.d', 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', diff --git a/lib/configfiles/squeeze.inc.php b/lib/configfiles/squeeze.inc.php index 42d4f9ad..a54e6bcf 100644 --- a/lib/configfiles/squeeze.inc.php +++ b/lib/configfiles/squeeze.inc.php @@ -17,6 +17,23 @@ * */ +// Try to guess user/group from settings' email UID/GID +$vmail_user=posix_getpwuid($settings['system']['vmail_uid']); +$vmail_group=posix_getgrgid($settings['system']['vmail_gid']); + +/* If one of them are not set, call it 'vmail' and suggest creating user/group + * in scripts. */ +if ($vmail_user === false) { + $vmail_username="vmail"; +} else { + $vmail_username=$vmail_user['name']; +} +if ($vmail_group === false) { + $vmail_groupname="vmail"; +} else { + $vmail_groupname=$vmail_group['name']; +} + return Array( 'debian_squeeze' => Array( 'label' => 'Debian 6.0 (Squeeze)', @@ -128,13 +145,13 @@ return Array( 'postfix_courier' => Array( 'label' => 'Postfix/Courier', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' '.$vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', + 'mkdir -p ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'apt-get install postfix postfix-mysql libsasl2-2 libsasl2-modules libsasl2-modules-sql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', - 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', @@ -189,13 +206,13 @@ return Array( 'postfix_dovecot' => Array( 'label' => 'Postfix/Dovecot', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', + 'mkdir -p ' . $settings['system']['vmail_homedir'], + 'chown -R ' . $vmail_username . ':' . $vmail_groupname . ' ' . $settings['system']['vmail_homedir'], 'apt-get install postfix postfix-mysql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', - 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', diff --git a/lib/configfiles/suse11.inc.php b/lib/configfiles/suse11.inc.php index 241e6e7f..beb82e82 100644 --- a/lib/configfiles/suse11.inc.php +++ b/lib/configfiles/suse11.inc.php @@ -17,6 +17,23 @@ * */ +// Try to guess user/group from settings' email UID/GID +$vmail_user=posix_getpwuid($settings['system']['vmail_uid']); +$vmail_group=posix_getgrgid($settings['system']['vmail_gid']); + +/* If one of them are not set, call it 'vmail' and suggest creating user/group + * in scripts. */ +if ($vmail_user === false) { + $vmail_username="vmail"; +} else { + $vmail_username=$vmail_user['name']; +} +if ($vmail_group === false) { + $vmail_groupname="vmail"; +} else { + $vmail_groupname=$vmail_group['name']; +} + return Array( 'opensuse_11_x' => Array( 'label' => 'openSUSE 11.x', @@ -68,11 +85,11 @@ return Array( 'etc_sasl2_smtpd.conf' => '/etc/sasl2/smtpd.conf' ), 'commands' => Array( - 'mkdir -p /var/spool/postfix/etc/pam.d', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], + 'chown -R ' . $vmail_username . ':' . $vmail_groupname . ' ' . $settings['system']['vmail_homedir'], + 'mkdir -p /var/spool/postfix/etc/pam.d', 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', @@ -106,13 +123,13 @@ return Array( 'postfix_dovecot' => Array( 'label' => 'Postfix/Dovecot', 'commands' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', 'zypper install postfix postfix-mysql', 'mkdir -p /var/spool/postfix/etc/pam.d', 'mkdir -p /var/spool/postfix/var/run/mysqld', - 'groupadd -g ' . $settings['system']['vmail_gid'] . ' vmail', - 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g vmail vmail', 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R vmail:vmail ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'touch /etc/postfix/mysql-virtual_alias_maps.cf', 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', From 1f281a2a9a0434b94ab103497852c59cb4b26226 Mon Sep 17 00:00:00 2001 From: avengerx Date: Sun, 1 Jul 2012 18:25:36 -0300 Subject: [PATCH 2/6] Minor changes to gentoo-specific default confs for SMTPd Pointed SSL keys to default (system-installed) keys that would work out-of-the-box. Changed max size of emails from 50MB to 512MB to avoid problems on default installations (some customers like sending big emails sometimes). Some additional cosmetic changes. --- .../gentoo/postfix_courier/etc_postfix_main.cf | 10 +++++----- .../gentoo/postfix_dovecot/etc_postfix_main.cf | 13 +++++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_main.cf b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_main.cf index 609373df..c5aee798 100644 --- a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_main.cf +++ b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_main.cf @@ -3,7 +3,7 @@ mydomain = # should be different from $mydomain eg. "mail.$mydomain" -myhostname = +myhostname = mail.$mydomain mydestination = $myhostname, $mydomain, @@ -36,8 +36,8 @@ smtpd_sender_restrictions = permit_mynetworks, smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname -# Maximum size of Message in bytes (50MB) -message_size_limit = 52428800 +# Maximum size of Message in bytes (512MB) +message_size_limit = 536870912 ## SASL Auth Settings smtpd_sasl_auth_enable = yes @@ -68,8 +68,8 @@ virtual_mailbox_limit = 0 #smtp_tls_note_starttls_offer = yes ## TLS for email client #smtpd_tls_security_level = may -#smtpd_tls_cert_file = /etc/ssl/server/.pem -#smtpd_tls_key_file = $smtpd_tls_cert_file +#smtpd_tls_cert_file = /etc/ssl/postfix/server.pem +#smtpd_tls_key_file = /etc/ssl/postfix/server.key #smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt #smtpd_tls_loglevel = 1 #smtpd_tls_received_header = yes diff --git a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_main.cf b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_main.cf index 44414c76..74826220 100644 --- a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_main.cf +++ b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_main.cf @@ -9,7 +9,7 @@ sendmail_path = /usr/sbin/sendmail mydomain = # should be different from $mydomain eg. "mail.$mydomain" -myhostname = +myhostname = mail.$mydomain mydestination = $myhostname, $mydomain, @@ -26,7 +26,7 @@ default_destination_concurrency_limit = 20 local_destination_concurrency_limit = 2 # SMTPD Settings -smtpd_banner = $myhostname ESMTP $mail_name (Gentoo/GNU) +smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) smtpd_helo_required = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, @@ -42,8 +42,8 @@ smtpd_sender_restrictions = permit_mynetworks, smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client -# Maximum size of Message in bytes (50MB) -message_size_limit = 52428800 +# Maximum size of Message in bytes (512MB) +message_size_limit = 536870912 ## SASL Auth Settings smtpd_sasl_auth_enable = yes @@ -81,8 +81,9 @@ virtual_mailbox_limit = 0 #smtp_use_tls = yes #smtp_tls_note_starttls_offer = yes ## TLS for email client -#smtpd_tls_cert_file = /etc/ssl/server/.pem -#smtpd_tls_key_file = /etc/ssl/server/.pem +#smtpd_tls_cert_file = /etc/ssl/server/server.pem +#smtpd_tls_key_file = /etc/ssl/server/server.key +#smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt #smtpd_tls_CAfile = /etc/ssl/cacert.class3.crt # Just an example for CACert.org #smtpd_tls_auth_only = no #smtpd_tls_loglevel = 1 From 80c4fdeb7948fec483b45bad128d21c39986e172 Mon Sep 17 00:00:00 2001 From: avengerx Date: Sun, 1 Jul 2012 20:38:02 -0300 Subject: [PATCH 3/6] Fix authmysqlrc example config to point to actual mysql columns. --- .../gentoo/courier/etc_courier_authlib_authmysqlrc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/misc/configfiles/gentoo/courier/etc_courier_authlib_authmysqlrc b/templates/misc/configfiles/gentoo/courier/etc_courier_authlib_authmysqlrc index 29d84fc4..68b78a69 100644 --- a/templates/misc/configfiles/gentoo/courier/etc_courier_authlib_authmysqlrc +++ b/templates/misc/configfiles/gentoo/courier/etc_courier_authlib_authmysqlrc @@ -5,10 +5,10 @@ MYSQL_PORT 0 MYSQL_DATABASE MYSQL_USER_TABLE mail_users MYSQL_CRYPT_PWFIELD password_enc -MYSQL_UID_FIELD -MYSQL_GID_FIELD +MYSQL_UID_FIELD uid +MYSQL_GID_FIELD gid MYSQL_LOGIN_FIELD username -MYSQL_HOME_FIELD "" +MYSQL_HOME_FIELD homedir MYSQL_MAILDIR_FIELD maildir MYSQL_QUOTA_FIELD (quota*1024*1024) MYSQL_AUXOPTIONS_FIELD CONCAT("allowimap=",imap,",allowpop3=",pop3) From 07e879a9f87a549f0604cf64a1b12d102d0c09ec Mon Sep 17 00:00:00 2001 From: avengerx Date: Sun, 1 Jul 2012 20:39:14 -0300 Subject: [PATCH 4/6] Fix imapd-ssl and pop3d-ssl example files to point to gentoo actual paths. --- .../configfiles/gentoo/courier/etc_courier-imap_imapd-ssl | 4 ++-- .../configfiles/gentoo/courier/etc_courier-imap_pop3d-ssl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/misc/configfiles/gentoo/courier/etc_courier-imap_imapd-ssl b/templates/misc/configfiles/gentoo/courier/etc_courier-imap_imapd-ssl index 9f48d875..bb1eaa01 100644 --- a/templates/misc/configfiles/gentoo/courier/etc_courier-imap_imapd-ssl +++ b/templates/misc/configfiles/gentoo/courier/etc_courier-imap_imapd-ssl @@ -145,7 +145,7 @@ TLS_STARTTLS_PROTOCOL=TLS1 # servers, and is optional for SSL/TLS clients. TLS_CERTFILE is usually # treated as confidential, and must not be world-readable. # -TLS_CERTFILE=/etc/ssl/server/.pem +TLS_CERTFILE=/etc/ssl/postfix/server.pem ##NAME: TLS_TRUSTCERTS:0 # @@ -159,7 +159,7 @@ TLS_CERTFILE=/etc/ssl/server/.pem # to PEER or REQUIREPEER). # # -# TLS_TRUSTCERTS= +TLS_TRUSTCERTS=/etc/ssl/certs ##NAME: TLS_VERIFYPEER:0 # diff --git a/templates/misc/configfiles/gentoo/courier/etc_courier-imap_pop3d-ssl b/templates/misc/configfiles/gentoo/courier/etc_courier-imap_pop3d-ssl index 39220bd4..3f8b8bc9 100644 --- a/templates/misc/configfiles/gentoo/courier/etc_courier-imap_pop3d-ssl +++ b/templates/misc/configfiles/gentoo/courier/etc_courier-imap_pop3d-ssl @@ -133,7 +133,7 @@ TLS_STARTTLS_PROTOCOL=TLS1 # servers, and is optional for SSL/TLS clients. TLS_CERTFILE is usually # treated as confidential, and must not be world-readable. # -TLS_CERTFILE=/etc/ssl/server/.pem +TLS_CERTFILE=/etc/ssl/postfix/server.pem ##NAME: TLS_TRUSTCERTS:0 # @@ -147,7 +147,7 @@ TLS_CERTFILE=/etc/ssl/server/.pem # to PEER or REQUIREPEER). # # -# TLS_TRUSTCERTS= +TLS_TRUSTCERTS=/etc/ssl/certs ##NAME: TLS_VERIFYPEER:0 # From 7a4ce63b75865d28b5c4bf8393208cfe65c59895 Mon Sep 17 00:00:00 2001 From: avengerx Date: Mon, 2 Jul 2012 02:40:39 -0300 Subject: [PATCH 5/6] Update scripts for postfix+courier and postfix+dovecot for gentoo. Changes here include: - shorten some repetitive commands (gentoo.inc.php) - maps uid/gid from database instead of statically on main.cf - maps 'homedir' from database instead of statically in vmail_mailbox_base (concatenates 'homedir' and 'maildir' columns from mail_users table) - update mysql query files to use strictly postfix 2.2+ new format (in accordance to http://www.postfix.org/mysql_table.5.html) --- lib/configfiles/gentoo.inc.php | 49 +++++++------------ .../postfix_courier/etc_postfix_main.cf | 6 +-- .../etc_postfix_mysql-virtual_alias_maps.cf | 5 +- .../etc_postfix_mysql-virtual_gid_maps.cf | 6 +++ ...c_postfix_mysql-virtual_mailbox_domains.cf | 5 +- ...ostfix_mysql-virtual_mailbox_limit_maps.cf | 7 ++- .../etc_postfix_mysql-virtual_mailbox_maps.cf | 5 +- .../etc_postfix_mysql-virtual_uid_maps.cf | 6 +++ .../postfix_dovecot/etc_postfix_main.cf | 6 +-- .../etc_postfix_mysql-virtual_alias_maps.cf | 5 +- .../etc_postfix_mysql-virtual_gid_maps.cf | 6 +++ ...c_postfix_mysql-virtual_mailbox_domains.cf | 5 +- ...ostfix_mysql-virtual_mailbox_limit_maps.cf | 7 ++- .../etc_postfix_mysql-virtual_mailbox_maps.cf | 5 +- .../etc_postfix_mysql-virtual_uid_maps.cf | 6 +++ 15 files changed, 62 insertions(+), 67 deletions(-) create mode 100644 templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_gid_maps.cf create mode 100644 templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_uid_maps.cf create mode 100644 templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_gid_maps.cf create mode 100644 templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_uid_maps.cf diff --git a/lib/configfiles/gentoo.inc.php b/lib/configfiles/gentoo.inc.php index f87c4232..add964b2 100644 --- a/lib/configfiles/gentoo.inc.php +++ b/lib/configfiles/gentoo.inc.php @@ -147,23 +147,16 @@ return Array( 'chmod 0750 ' . $settings['system']['vmail_homedir'], 'mv /etc/postfix/main.cf /etc/postfix/main.cf.gentoo', 'touch /etc/postfix/main.cf', - 'touch /etc/postfix/mysql-virtual_alias_maps.cf', - 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', - 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', - 'touch /etc/postfix/mysql-virtual_sender_permissions.cf', 'touch /etc/sasl2/smtpd.conf', 'chown root:root /etc/postfix/main.cf', - 'chown root:postfix /etc/postfix/mysql-virtual_alias_maps.cf', - 'chown root:postfix /etc/postfix/mysql-virtual_mailbox_domains.cf', - 'chown root:postfix /etc/postfix/mysql-virtual_mailbox_maps.cf', - 'chown root:postfix /etc/postfix/mysql-virtual_sender_permissions.cf', 'chown root:root /etc/sasl2/smtpd.conf', 'chmod 0644 /etc/postfix/main.cf', - 'chmod 0640 /etc/postfix/mysql-virtual_alias_maps.cf', - 'chmod 0640 /etc/postfix/mysql-virtual_mailbox_domains.cf', - 'chmod 0640 /etc/postfix/mysql-virtual_mailbox_maps.cf', - 'chmod 0640 /etc/postfix/mysql-virtual_sender_permissions.cf', 'chmod 0600 /etc/sasl2/smtpd.conf', + 'for suffix in {alias,mailbox,uid,gid}_maps mailbox_domains sender_permissions; do', + ' touch /etc/postfix/mysql-virtual_${suffix}.cf', + ' chown root:postfix /etc/postfix/mysql-virtual_${suffix}.cf', + ' chmod 0640 /etc/postfix/mysql-virtual_${suffix}.cf', + 'done' ), 'files' => Array( 'etc_postfix_main.cf' => '/etc/postfix/main.cf', @@ -171,6 +164,8 @@ return Array( 'etc_postfix_mysql-virtual_mailbox_domains.cf' => '/etc/postfix/mysql-virtual_mailbox_domains.cf', 'etc_postfix_mysql-virtual_mailbox_maps.cf' => '/etc/postfix/mysql-virtual_mailbox_maps.cf', 'etc_postfix_mysql-virtual_sender_permissions.cf' => '/etc/postfix/mysql-virtual_sender_permissions.cf', + 'etc_postfix_mysql-virtual_uid_maps.cf' => '/etc/postfix/mysql-virtual_uid_maps.cf', + 'etc_postfix_mysql-virtual_gid_maps.cf' => '/etc/postfix/mysql-virtual_gid_maps.cf', 'etc_sasl2_smtpd.conf' => '/etc/sasl2/smtpd.conf' ), 'commands_2' => Array( @@ -189,24 +184,14 @@ return Array( 'chown -R '.$vmail_user['name'].':'.$vmail_group['name'].' ' . $settings['system']['vmail_homedir'], 'chmod 0750 ' . $settings['system']['vmail_homedir'], 'mv /etc/postfix/main.cf /etc/postfix/main.cf.gentoo', - 'touch /etc/postfix/main.cf', - 'touch /etc/postfix/master.cf', - 'touch /etc/postfix/mysql-virtual_alias_maps.cf', - 'touch /etc/postfix/mysql-virtual_mailbox_domains.cf', - 'touch /etc/postfix/mysql-virtual_mailbox_maps.cf', - 'touch /etc/postfix/mysql-virtual_sender_permissions.cf', - 'chown root:root /etc/postfix/main.cf', - 'chown root:root /etc/postfix/master.cf', - 'chown root:postfix /etc/postfix/mysql-virtual_alias_maps.cf', - 'chown root:postfix /etc/postfix/mysql-virtual_mailbox_domains.cf', - 'chown root:postfix /etc/postfix/mysql-virtual_mailbox_maps.cf', - 'chown root:postfix /etc/postfix/mysql-virtual_sender_permissions.cf', - 'chmod 0644 /etc/postfix/main.cf', - 'chmod 0644 /etc/postfix/master.cf', - 'chmod 0640 /etc/postfix/mysql-virtual_alias_maps.cf', - 'chmod 0640 /etc/postfix/mysql-virtual_mailbox_domains.cf', - 'chmod 0640 /etc/postfix/mysql-virtual_mailbox_maps.cf', - 'chmod 0640 /etc/postfix/mysql-virtual_sender_permissions.cf' + 'touch /etc/postfix/{main,master}.cf', + 'chown root:root /etc/postfix/{main,master}.cf', + 'chmod 0644 /etc/postfix/{main,master}.cf', + 'for suffix in {alias,mailbox,uid,gid}_maps mailbox_domains sender_permissions; do', + ' touch /etc/postfix/mysql-virtual_${suffix}.cf', + ' chown root:postfix /etc/postfix/mysql-virtual_${suffix}.cf', + ' chmod 0640 /etc/postfix/mysql-virtual_${suffix}.cf', + 'done' ), 'files' => Array( 'etc_postfix_main.cf' => '/etc/postfix/main.cf', @@ -214,7 +199,9 @@ return Array( 'etc_postfix_mysql-virtual_alias_maps.cf' => '/etc/postfix/mysql-virtual_alias_maps.cf', 'etc_postfix_mysql-virtual_mailbox_domains.cf' => '/etc/postfix/mysql-virtual_mailbox_domains.cf', 'etc_postfix_mysql-virtual_mailbox_maps.cf' => '/etc/postfix/mysql-virtual_mailbox_maps.cf', - 'etc_postfix_mysql-virtual_sender_permissions.cf' => '/etc/postfix/mysql-virtual_sender_permissions.cf' + 'etc_postfix_mysql-virtual_sender_permissions.cf' => '/etc/postfix/mysql-virtual_sender_permissions.cf', + 'etc_postfix_mysql-virtual_uid_maps.cf' => '/etc/postfix/mysql-virtual_uid_maps.cf', + 'etc_postfix_mysql-virtual_gid_maps.cf' => '/etc/postfix/mysql-virtual_gid_maps.cf' ), 'commands_2' => Array( 'rc-update add postfix default' diff --git a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_main.cf b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_main.cf index c5aee798..ddc4337b 100644 --- a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_main.cf +++ b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_main.cf @@ -45,13 +45,13 @@ smtpd_sasl_local_domain = $myhostname broken_sasl_auth_clients = yes # Virtual delivery settings -virtual_mailbox_base = +virtual_mailbox_base = / virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf smtpd_sender_login_maps = mysql:/etc/postfix/mysql-virtual_sender_permissions.cf -virtual_uid_maps = static: -virtual_gid_maps = static: +virtual_uid_maps = mysql:/etc/postfix/mysql-virtual_uid_maps.cf +virtual_gid_maps = mysql:/etc/postfix/mysql-virtual_gid_maps.cf # Local delivery settings local_transport = local diff --git a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_alias_maps.cf b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_alias_maps.cf index a9e71f83..d0c6c8a5 100644 --- a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_alias_maps.cf +++ b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_alias_maps.cf @@ -1,8 +1,5 @@ user = password = dbname = -table = mail_virtual -select_field = destination -where_field = email -additional_conditions = and TRIM(destination) <> '' +query = select destination from mail_virtual where email = '%s' and trim(destination) <> '' hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_gid_maps.cf b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_gid_maps.cf new file mode 100644 index 00000000..c58ea122 --- /dev/null +++ b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_gid_maps.cf @@ -0,0 +1,6 @@ +user = +password = +dbname = +expansion_limit = 1 +query = select gid from mail_users where email = '%s' +hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_domains.cf b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_domains.cf index 4484bee2..c80c60b6 100644 --- a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_domains.cf +++ b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_domains.cf @@ -1,8 +1,5 @@ user = password = dbname = -table = panel_domains -select_field = domain -where_field = domain -additional_conditions = and isemaildomain = '1' +query = select domain from panel_domains where domain = '%s' and isemaildomain = '1' hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_limit_maps.cf b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_limit_maps.cf index 03c191ac..9c56cf74 100644 --- a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_limit_maps.cf +++ b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_limit_maps.cf @@ -1,7 +1,6 @@ user = password = dbname = -table = mail_users -select_field = (quota*1024*1024) -where_field = email -hosts = \ No newline at end of file +expansion_limit = 1 +query = select (quota*1024*1024) from mail_users where email = '%s' +hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_maps.cf b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_maps.cf index 7e0f79af..584ec20a 100644 --- a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_maps.cf +++ b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_mailbox_maps.cf @@ -1,7 +1,6 @@ user = password = dbname = -table = mail_users -select_field = maildir -where_field = email +expansion_limit = 1 +query = select concat(homedir,maildir) from mail_users where email = '%s' hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_uid_maps.cf b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_uid_maps.cf new file mode 100644 index 00000000..a296bcde --- /dev/null +++ b/templates/misc/configfiles/gentoo/postfix_courier/etc_postfix_mysql-virtual_uid_maps.cf @@ -0,0 +1,6 @@ +user = +password = +dbname = +expansion_limit = 1 +query = select uid from mail_users where email = '%s' +hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_main.cf b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_main.cf index 74826220..79350c85 100644 --- a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_main.cf +++ b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_main.cf @@ -58,13 +58,13 @@ virtual_transport = dovecot dovecot_destination_recipient_limit = 1 # Virtual delivery settings -virtual_mailbox_base = +virtual_mailbox_base = / virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf smtpd_sender_login_maps = mysql:/etc/postfix/mysql-virtual_sender_permissions.cf -virtual_uid_maps = static: -virtual_gid_maps = static: +virtual_uid_maps = mysql:/etc/postfix/mysql-virtual_uid_maps.cf +virtual_gid_maps = mysql:/etc/postfix/mysql-virtual_gid_maps.cf # Local delivery settings local_transport = local diff --git a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_alias_maps.cf b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_alias_maps.cf index a9e71f83..d0c6c8a5 100644 --- a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_alias_maps.cf +++ b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_alias_maps.cf @@ -1,8 +1,5 @@ user = password = dbname = -table = mail_virtual -select_field = destination -where_field = email -additional_conditions = and TRIM(destination) <> '' +query = select destination from mail_virtual where email = '%s' and trim(destination) <> '' hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_gid_maps.cf b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_gid_maps.cf new file mode 100644 index 00000000..c58ea122 --- /dev/null +++ b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_gid_maps.cf @@ -0,0 +1,6 @@ +user = +password = +dbname = +expansion_limit = 1 +query = select gid from mail_users where email = '%s' +hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_domains.cf b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_domains.cf index 4484bee2..c80c60b6 100644 --- a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_domains.cf +++ b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_domains.cf @@ -1,8 +1,5 @@ user = password = dbname = -table = panel_domains -select_field = domain -where_field = domain -additional_conditions = and isemaildomain = '1' +query = select domain from panel_domains where domain = '%s' and isemaildomain = '1' hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_limit_maps.cf b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_limit_maps.cf index 03c191ac..9c56cf74 100644 --- a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_limit_maps.cf +++ b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_limit_maps.cf @@ -1,7 +1,6 @@ user = password = dbname = -table = mail_users -select_field = (quota*1024*1024) -where_field = email -hosts = \ No newline at end of file +expansion_limit = 1 +query = select (quota*1024*1024) from mail_users where email = '%s' +hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_maps.cf b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_maps.cf index 7e0f79af..584ec20a 100644 --- a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_maps.cf +++ b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_mailbox_maps.cf @@ -1,7 +1,6 @@ user = password = dbname = -table = mail_users -select_field = maildir -where_field = email +expansion_limit = 1 +query = select concat(homedir,maildir) from mail_users where email = '%s' hosts = diff --git a/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_uid_maps.cf b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_uid_maps.cf new file mode 100644 index 00000000..a296bcde --- /dev/null +++ b/templates/misc/configfiles/gentoo/postfix_dovecot/etc_postfix_mysql-virtual_uid_maps.cf @@ -0,0 +1,6 @@ +user = +password = +dbname = +expansion_limit = 1 +query = select uid from mail_users where email = '%s' +hosts = From e7c11bfe5f26ad7a0356c25d4a8fa80060fbd894 Mon Sep 17 00:00:00 2001 From: avengerx Date: Mon, 2 Jul 2012 03:11:27 -0300 Subject: [PATCH 6/6] More fixes for gentoo's confs related to uid/gid. Gentoo 'mail' user/group has uid/gid 8/12 respectively. This makes postfix' 'virtual' complain about 'bad uid'. Then the default is set back to 'vmail' user/group. You can force using the 'mail' user (which is responsible for the local mail delivery files) by adding to /etc/postfix/main.cf the following lines: virtual_minimum_uid = 8 virtual_minimum_gid = 12 But this is not encouraged, so the default is to create a really unprivileged 'vmail' user with a high uid/gid (above 1000). Due to this, the test for already existent uid/gid is added here (if you have set uid/gid on froxlor but they don't actually exist, lines to add the user/group will be added to the config file as it does with the other distro's files. --- lib/configfiles/gentoo.inc.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/configfiles/gentoo.inc.php b/lib/configfiles/gentoo.inc.php index add964b2..b85e04e5 100644 --- a/lib/configfiles/gentoo.inc.php +++ b/lib/configfiles/gentoo.inc.php @@ -24,12 +24,12 @@ $vmail_group=posix_getgrgid($settings['system']['vmail_gid']); /* If one of them are not set, call it 'vmail' and suggest creating user/group * in scripts. */ if ($vmail_user === false) { - $vmail_username="mail"; // Gentoo uses 'mail' user/group + $vmail_username="vmail"; } else { $vmail_username=$vmail_user['name']; } if ($vmail_group === false) { - $vmail_groupname="mail"; // Gentoo uses 'mail' user/group + $vmail_groupname="vmail"; } else { $vmail_groupname=$vmail_group['name']; } @@ -140,10 +140,12 @@ return Array( 'postfix_courier' => Array( 'label' => 'Postfix/Courier', 'commands_1' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', 'echo "mail-mta/postfix -dovecot-sasl sasl" >> /etc/portage/package.use', 'emerge -av postfix', 'mkdir -p ' . $settings['system']['vmail_homedir'], - 'chown -R '.$vmail_user['name'].':'.$vmail_group['name'].' ' . $settings['system']['vmail_homedir'], + 'chown -R '.$vmail_username.':'.$vmail_groupname.' ' . $settings['system']['vmail_homedir'], 'chmod 0750 ' . $settings['system']['vmail_homedir'], 'mv /etc/postfix/main.cf /etc/postfix/main.cf.gentoo', 'touch /etc/postfix/main.cf', @@ -178,6 +180,8 @@ return Array( 'postfix_dovecot' => Array( 'label' => 'Postfix/Dovecot', 'commands_1' => Array( + ($vmail_group === false) ? 'groupadd -g ' . $settings['system']['vmail_gid'] . ' ' . $vmail_groupname : '', + ($vmail_user === false) ? 'useradd -u ' . $settings['system']['vmail_uid'] . ' -g ' . $vmail_groupname . ' ' . $vmail_username : '', 'echo "mail-mta/postfix dovecot-sasl -sasl" >> /etc/portage/package.use', 'emerge -av postfix', 'mkdir -p ' . $settings['system']['vmail_homedir'],