Current File : /home/inlingua/public_html/decay_sym/root/var/softaculous/apps/exim/3/install.php |
<?php
function __exim_requirements(){
yum('lsof', 'install');
kill_by_port(25);
}
function __exim_install(){
global $error, $globals, $infos, $distro;
$distro = $globals['WU_DISTRO'];
$ver = explode('.', $globals['os_version']);
$os_ver = $ver[0];
// Ship centos7 compiled tar fro ubuntu18 and centos7
if(($distro == 'ubuntu' && $os_ver == '18') || ($distro == 'centos' && $os_ver == '7') || ($distro == 'cloudlinux' && $os_ver == '7')){
vexec('rm -rf '.EXIM_APP, $out);
vexec('cd /usr/local/apps; tar -zxf /var/softaculous/apps/exim/c7_exim-x86_64.tar.gz', $out);
}
vexec('useradd -d /var/spool/exim -s /sbin/nologin exim');
// Check for default php
$distro = $globals['WU_DISTRO'];
vexec('ln -s '.EXIM_APP.'bin/exim /usr/sbin/exim');
// This is required to send mail from php script
vexec('rm -rf /usr/sbin/sendmail');
vexec('ln -s /usr/sbin/exim /usr/sbin/sendmail');
if(!is_debian()){
// Remove Exim
yum('postfix', 'remove');
yum('epel-release');
yum('perl-GDGraph');
}
if($distro == 'centos' && $os_ver == '7'){
yum('pcre2');
}
// Almalinux 10 support
if($distro == 'almalinux' && $os_ver == '10'){
yum('libdb');
}
// Remove exim if installed
yum('exim*', 'remove');
yum_exclude('exim*');
vexec('mkdir -p /etc/exim');
vexec('cp -f '.EXIM_WAPP.'/3/exim.conf /etc/exim/exim.conf');
vexec('cp -f '.EXIM_WAPP.'/3/exim.pl /etc/exim/exim.pl');
vexec('cp -f '.EXIM_WAPP.'/3/exim_system_filter /etc/exim_system_filter');
// Service files
if(file_exists('/usr/lib/systemd/system')){
vexec('cp -f '.EXIM_WAPP.'/3/exim.service /usr/lib/systemd/system/exim.service');
}else{
vexec('cp -f '.EXIM_WAPP.'/3/exim.service /etc/systemd/system/exim.service');
}
if(!file_exists('/etc/sysconfig')){
mkdir('/etc/sysconfig');
}
vexec('cp -f '.EXIM_WAPP.'/3/exim-env /etc/sysconfig/exim');
// Need to make it for a safe side
vexec('mkdir -p /var/spool/exim');
vexec('chown exim:exim /var/spool/exim');
vexec('chmod 0750 /var/spool/exim');
vexec('mkdir /var/log/exim');
vexec('chown exim:exim /var/log/exim');
vexec('chmod 0750 /var/log/exim');
// Install Syslog
yum('rsyslog');
vexec('systemctl restart rsyslog');
// Rebuild conf
exim_rebuild_conf();
// Clean up the aliases file | Restrict email forwarders
$disable = array('manager', 'abuse', 'www', 'webmaster', 'noc', 'security', 'hostmaster', 'info', 'marketing', 'sales', 'support');
$lines = file('/etc/aliases');
foreach($lines as $k => $v){
// Update the Records
foreach($disable as $value){
if(preg_match('/^'.$value.'/i', $v)){
$lines[$k] = "#$v";
}
}
}
// Write to File
writefile('/etc/aliases', implode('', $lines), 1);
// This file is needed to be present for suspend user check
writefile('/etc/user_suspended_list', '', 1);
// Copy the RBL List
exim_create_rbl_file();
exim_cert_changed($globals['certs_path'], 0);
//Because on Ubuntu restarting service fails sometimes
kill_by_port(25);
vexec('systemctl restart exim');
// Install roundcube
exim_install_roundcube(1);
// Create DKIM dirs
exim_create_dkim_dirs();
}
function __exim_after_save_install(){
global $globals, $softpanel;
exim_configuration();
exim_build_relayhost();
exim_build_userdomain();
exim_conf_files_create();
exim_rewrite_hourly_limit();
exim_rewrite_incoming_mail_domain();
// Add the logrotate
if (file_exists('/etc/logrotate.d/exim')){
unlink('/etc/logrotate.d/exim');
}
copy(EXIM_WAPP.'/logrotate', '/etc/logrotate.d/exim');
if(!is_dir($globals['data_path'].'/mail')){
mkdir($globals['data_path'].'/mail', 0750);
chown($globals['data_path'].'/mail', $globals['panel_user']);
vexec('chgrp -R exim '.$globals['data_path'].'/mail');
}
// Check firewalld installed and Add EXIM services in firewalld
$status = trim(shell_exec('firewall-cmd --state 2>&1'));
if($status == 'running'){
vexec('firewall-cmd --zone=public --add-service=smtp --add-service=smtps --add-service=imap --add-service=imaps --add-service=pop3 --add-service=pop3s --add-service=https --add-service=dhcp --permanent && firewall-cmd --reload');
vexec('firewall-cmd --zone=public --add-port={25/tcp,143/tcp,465/tcp,993/tcp,587/tcp} --permanent && firewall-cmd --reload');
}
}