public function configure_amavis() { global $conf; // amavisd user config file $configfile = 'fedora_amavisd_conf'; if (is_file($conf["amavis"]["config_dir"] . '/amavisd.conf')) { copy($conf["amavis"]["config_dir"] . '/amavisd.conf', $conf["amavis"]["config_dir"] . '/amavisd.conf~'); } if (is_file($conf["amavis"]["config_dir"] . '/amavisd.conf~')) { exec('chmod 400 ' . $conf["amavis"]["config_dir"] . '/amavisd.conf~'); } if (!is_dir($conf["amavis"]["config_dir"])) { mkdir($conf["amavis"]["config_dir"]); } $content = rf("tpl/" . $configfile . ".master"); $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content); $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content); $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content); $content = str_replace('{mysql_server_port}', $conf["mysql"]["port"], $content); $content = str_replace('{mysql_server_ip}', $conf['mysql']['ip'], $content); $content = str_replace('{hostname}', $conf['hostname'], $content); $content = str_replace('/var/spool/amavisd/clamd.sock', '/var/run/clamav/clamd.sock', $content); wf($conf["amavis"]["config_dir"] . '/amavisd.conf', $content); // Adding the amavisd commands to the postfix configuration $postconf_commands = array('content_filter = amavis:[127.0.0.1]:10024', 'receive_override_options = no_address_mappings'); // Make a backup copy of the main.cf file copy($conf["postfix"]["config_dir"] . '/main.cf', $conf["postfix"]["config_dir"] . '/main.cf~2'); // Executing the postconf commands foreach ($postconf_commands as $cmd) { $command = "postconf -e '{$cmd}'"; caselog($command . " &> /dev/null", __FILE__, __LINE__, "EXECUTED: {$command}", "Failed to execute the command {$command}"); } // Append the configuration for amavisd to the master.cf file if (is_file($conf["postfix"]["config_dir"] . '/master.cf')) { copy($conf["postfix"]["config_dir"] . '/master.cf', $conf["postfix"]["config_dir"] . '/master.cf~'); } $content = rf($conf["postfix"]["config_dir"] . '/master.cf'); // Only add the content if we had not addded it before if (!stristr($content, "127.0.0.1:10025")) { unset($content); $content = rf("tpl/master_cf_amavis.master"); af($conf["postfix"]["config_dir"] . '/master.cf', $content); } unset($content); removeLine('/etc/sysconfig/freshclam', 'FRESHCLAM_DELAY=disabled-warn # REMOVE ME', 1); replaceLine('/etc/freshclam.conf', 'Example', '# Example', 1); }
public function configure_dovecot() { global $conf; $config_dir = $conf['dovecot']['config_dir']; //* Configure master.cf and add a line for deliver if (is_file($config_dir . '/master.cf')) { copy($config_dir . '/master.cf', $config_dir . '/master.cf~2'); } if (is_file($config_dir . '/master.cf~')) { chmod($config_dir . '/master.cf~2', 0400); } $content = rf($conf["postfix"]["config_dir"] . '/master.cf'); // Only add the content if we had not addded it before if (!stristr($content, "dovecot/deliver")) { $deliver_content = 'dovecot unix - n n - - pipe' . "\n" . ' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'; af($conf["postfix"]["config_dir"] . '/master.cf', $deliver_content); } unset($content); unset($deliver_content); //* Reconfigure postfix to use dovecot authentication // Adding the amavisd commands to the postfix configuration $postconf_commands = array('dovecot_destination_recipient_limit = 1', 'virtual_transport = dovecot', 'smtpd_sasl_type = dovecot', 'smtpd_sasl_path = private/auth'); // Make a backup copy of the main.cf file copy($conf["postfix"]["config_dir"] . '/main.cf', $conf["postfix"]["config_dir"] . '/main.cf~3'); // Executing the postconf commands foreach ($postconf_commands as $cmd) { $command = "postconf -e '{$cmd}'"; caselog($command . " &> /dev/null", __FILE__, __LINE__, "EXECUTED: {$command}", "Failed to execute the command {$command}"); } //* copy dovecot.conf $configfile = 'dovecot.conf'; if (is_file($config_dir . '/' . $configfile)) { copy($config_dir . '/' . $configfile, $config_dir . '/' . $configfile . '~'); } //* Get the dovecot version exec('dovecot --version', $tmp); $dovecot_version = $tmp[0]; unset($tmp); //* Copy dovecot configuration file if (version_compare($dovecot_version, 2) >= 0) { if (is_file($conf['ispconfig_install_dir'] . '/server/conf-custom/install/debian6_dovecot2.conf.master')) { copy($conf['ispconfig_install_dir'] . '/server/conf-custom/install/debian6_dovecot2.conf.master', $config_dir . '/' . $configfile); } else { copy('tpl/debian6_dovecot2.conf.master', $config_dir . '/' . $configfile); } replaceLine($config_dir . '/' . $configfile, 'postmaster_address = postmaster@example.com', 'postmaster_address = postmaster@' . $conf['hostname'], 1, 0); if (version_compare($dovecot_version, 2.1) < 0) { removeLine($config_dir . '/' . $configfile, 'ssl_protocols ='); } } else { if (is_file($conf['ispconfig_install_dir'] . '/server/conf-custom/install/debian6_dovecot.conf.master')) { copy($conf['ispconfig_install_dir'] . '/server/conf-custom/install/debian6_dovecot.conf.master', $config_dir . '/' . $configfile); } else { copy('tpl/debian6_dovecot.conf.master', $config_dir . '/' . $configfile); } } //* dovecot-sql.conf $configfile = 'dovecot-sql.conf'; 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/debian6_dovecot-sql.conf.master', 'tpl/debian6_dovecot-sql.conf.master'); $content = str_replace('{mysql_server_ispconfig_user}', $conf['mysql']['ispconfig_user'], $content); $content = str_replace('{mysql_server_ispconfig_password}', $conf['mysql']['ispconfig_password'], $content); $content = str_replace('{mysql_server_database}', $conf['mysql']['database'], $content); $content = str_replace('{mysql_server_host}', $conf['mysql']['host'], $content); $content = str_replace('{server_id}', $conf['server_id'], $content); wf($config_dir . '/' . $configfile, $content); chmod($config_dir . '/' . $configfile, 0600); chown($config_dir . '/' . $configfile, 'root'); chgrp($config_dir . '/' . $configfile, 'root'); // Dovecot shall ignore mounts in website directory if (is_installed('doveadm')) { exec("doveadm mount add '/var/www/*' ignore > /dev/null 2> /dev/null"); } }