From b9a3ef486ebcde18a5ade37865ff8f397185d24f Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Sun, 24 Jul 2016 05:30:59 -0400 Subject: [PATCH] Fixed #3979 Mailbox users unable to save autoresponders --- install/dist/lib/fedora.lib.php | 68 +++++++++++++++++++++------------- 1 files changed, 42 insertions(+), 26 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index f063029..4b6dcd3 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -89,6 +89,9 @@ //* mysql-virtual_relayrecipientmaps.cf $this->process_postfix_config('mysql-virtual_relayrecipientmaps.cf'); + + //* mysql-virtual_outgoing_bcc.cf + $this->process_postfix_config('mysql-virtual_outgoing_bcc.cf'); //* mysql-virtual_policy_greylist.cf $this->process_postfix_config('mysql-virtual_policy_greylist.cf'); @@ -179,11 +182,33 @@ //if(!is_file('/var/lib/mailman/data/aliases')) touch('/var/lib/mailman/data/aliases'); if(is_file('/var/lib/mailman/data/aliases')) unlink('/var/lib/mailman/data/aliases'); if(!is_link('/var/lib/mailman/data/aliases')) symlink('/etc/mailman/aliases', '/var/lib/mailman/data/aliases'); + if(!is_file('/etc/mailman/aliases')) touch('/etc/mailman/aliases'); exec('postalias /var/lib/mailman/data/aliases'); if(!is_file('/etc/mailman/virtual-mailman')) touch('/etc/mailman/virtual-mailman'); exec('postmap /etc/mailman/virtual-mailman'); if(!is_file('/var/lib/mailman/data/transport-mailman')) touch('/var/lib/mailman/data/transport-mailman'); exec('/usr/sbin/postmap /var/lib/mailman/data/transport-mailman'); + + //* Create auxillary postfix conf files + $configfile = 'helo_access'; + if(is_file($config_dir.'/'.$configfile)) { + copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); + chmod($config_dir.'/'.$configfile.'~', 0400); + } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $content = strtr($content, $postconf_placeholders); + # todo: look up this server's ip addrs and loop through each + # todo: look up domains hosted on this server and loop through each + wf($config_dir.'/'.$configfile, $content); + + $configfile = 'blacklist_helo'; + if(is_file($config_dir.'/'.$configfile)) { + copy($config_dir.'/'.$configfile, $config_dir.'/'.$configfile.'~'); + chmod($config_dir.'/'.$configfile.'~', 0400); + } + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $content = strtr($content, $postconf_placeholders); + wf($config_dir.'/'.$configfile, $content); //* Make a backup copy of the main.cf file copy($config_dir.'/main.cf', $config_dir.'/main.cf~'); @@ -350,15 +375,9 @@ } $config_dir = $conf['postfix']['config_dir']; + //* Configure master.cf and add a line for deliver - if ($this->postfix_master()) { - exec ("postconf -M dovecot.unix", $out, $ret); - $add_dovecot_service = @($out[0]=='')?true:false; - } else { //* fallback - postfix < 2.9 - $content = rf($config_dir.'/master.cf'); - $add_dovecot_service = @(!stristr($content, "dovecot/deliver"))?true:false; - } - if($add_dovecot_service) { + if(!$this->get_postfix_service('dovecot', 'unix')) { //* backup if(is_file($config_dir.'/master.cf')){ copy($config_dir.'/master.cf', $config_dir.'/master.cf~2'); @@ -368,7 +387,7 @@ } //* Configure master.cf and add a line for deliver $content = rf($conf["postfix"]["config_dir"].'/master.cf'); - $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'; + $deliver_content = 'dovecot unix - n n - - pipe'."\n".' flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'."\n"; af($conf["postfix"]["config_dir"].'/master.cf', $deliver_content); unset($content); unset($deliver_content); @@ -446,6 +465,10 @@ $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content); $content = str_replace('{mysql_server_port}', $conf['mysql']['port'], $content); $content = str_replace('{server_id}', $conf['server_id'], $content); + # enable iterate_query for dovecot2 + if(version_compare($dovecot_version,2, '>=')) { + $content = str_replace('# iterate_query', 'iterate_query', $content); + } wf("$config_dir/$configfile", $content); exec("chmod 600 $config_dir/$configfile"); @@ -457,7 +480,7 @@ } public function configure_amavis() { - global $conf; + global $conf, $dist; // amavisd user config file $configfile = 'fedora_amavisd_conf'; @@ -472,6 +495,12 @@ $content = str_replace('{hostname}', $conf['hostname'], $content); wf($conf["amavis"]["config_dir"].'/amavisd.conf', $content); chmod($conf['amavis']['config_dir'].'/amavisd.conf', 0640); + + // for CentOS 7.2 only + if($dist['confid'] == 'centos72') { + chmod($conf['amavis']['config_dir'].'/amavisd.conf', 0750); + chgrp($conf['amavis']['config_dir'].'/amavisd.conf', 'amavis'); + } // Adding the amavisd commands to the postfix configuration @@ -492,22 +521,9 @@ $config_dir = $conf['postfix']['config_dir']; // Adding amavis-services to the master.cf file if the service does not already exists - if ($this->postfix_master()) { - exec ("postconf -M amavis.unix", $out, $ret); - $add_amavis = @($out[0]=='')?true:false; - unset($out); - exec ("postconf -M 127.0.0.1:10025.inet", $out, $ret); - $add_amavis_10025 = @($out[0]=='')?true:false; - unset($out); - exec ("postconf -M 127.0.0.1:10027.inet", $out, $ret); - $add_amavis_10027 = @($out[0]=='')?true:false; - unset($out); - } else { //* fallback - postfix < 2.9 - $content = rf($conf['postfix']['config_dir'].'/master.cf'); - $add_amavis = @(!preg_match('/^amavis\s+unix\s+/m', $content))?true:false; - $add_amavis_10025 = @(!preg_match('/^127.0.0.1:10025\s+/m', $content))?true:false; - $add_amavis_10027 = @(!preg_match('/^127.0.0.1:10027\s+/m', $content))?true:false; - } + $add_amavis = !$this->get_postfix_service('amavis','unix'); + $add_amavis_10025 = !$this->get_postfix_service('127.0.0.1:10025','inet'); + $add_amavis_10027 = !$this->get_postfix_service('127.0.0.1:10027','inet'); if ($add_amavis || $add_amavis_10025 || $add_amavis_10027) { //* backup master.cf -- Gitblit v1.9.1