Пример #1
0
function aliases_users()
{
    $ldap = new clladp();
    $users = new usersMenus();
    $main = new maincf_multi();
    if ($GLOBALS["VERBOSE"]) {
        echo "*** aliases_users() ***\n";
    }
    $filter = "(&(objectClass=userAccount)(uid=*))";
    $attrs = array("uid", "mail");
    $trap_uid = "uid";
    $dn = "dc=organizations,{$ldap->suffix}";
    if ($ldap->EnableManageUsersTroughActiveDirectory) {
        $ldapAD = new ldapAD();
        $filter = "(&(objectClass=user)(samaccountname=*))";
        $attrs = array("samaccountname", "mail");
        $trap_uid = "samaccountname";
        $dn = "{$ldapAD->suffix}";
        $hash = $ldapAD->Ldap_search($dn, $filter, $attrs);
    } else {
        $hash = $ldap->Ldap_search($dn, $filter, $attrs);
    }
    for ($i = 0; $i < $hash["count"]; $i++) {
        $uid = trim($hash[$i][$trap_uid][0]);
        if (strpos($uid, "\$") > 0) {
            continue;
        }
        if ($uid == null) {
            continue;
        }
        if (isset($hash[$i]["mail"])) {
            for ($t = 0; $t < $hash[$i]["mail"]["count"]; $t++) {
                $mail = $hash[$i]["mail"][$t];
                $mail = repair_addr($mail);
                $mail = trim($mail);
                $mail = str_replace("\r", "", $mail);
                $mail = str_replace("\n", "", $mail);
                if ($mail == null) {
                    continue;
                }
                if (!isset($GLOBALS["virtual_alias_maps_mem"][$mail])) {
                    if (!isset($GLOBALS["virtual_alias_maps_emailing"][$mail])) {
                        $GLOBALS["virtual_alias_maps_emailing"][$mail] = null;
                    }
                    if ($GLOBALS["virtual_alias_maps_emailing"][$mail] == null) {
                        $GLOBALS["virtual_alias_maps"][$mail] = "{$mail}\t{$mail}";
                    }
                }
                $GLOBALS["virtual_alias_maps_mem"][$mail] = true;
                if (!isset($GLOBALS["alias_maps_mem"][$uid])) {
                    $uid = trim($uid);
                    $uid = str_replace("\r", "", $uid);
                    $uid = str_replace("\n", "", $uid);
                    if ($uid == null) {
                        continue;
                    }
                    if (!preg_match("#.+?@#", $uid)) {
                        $GLOBALS["alias_maps"][] = "{$uid}:{$mail}";
                    }
                    $GLOBALS["alias_maps_mem"][$uid] = true;
                }
                $GLOBALS["virtual_mailbox"] = "{$mail}\t{$uid}";
            }
        } else {
            if ($GLOBALS["VERBOSE"]) {
                echo "Skipping \"{$uid}\" no \"mail\" attribute... in " . basename(__FILE__) . " Line: " . __LINE__ . "\n";
            }
        }
    }
    $filter = "(&(objectClass=transportTable)(cn=*@*))";
    $attrs = array("cn");
    $dn = "cn=PostfixRobots,cn=artica,{$ldap->suffix}";
    $hash = $ldap->Ldap_search($dn, $filter, $attrs);
    for ($i = 0; $i < $hash["count"]; $i++) {
        $cn = $hash[$i]["cn"][0];
        if (preg_match("#(.+?)@#", $cn, $re)) {
            $map = $re[1];
            if (!$GLOBALS["alias_maps_mem"][$map]) {
                $GLOBALS["alias_maps"][] = "{$map}:{$cn}";
                $GLOBALS["alias_maps_mem"][$map] = true;
            }
        }
    }
    $GLOBALS["virtual_alias_maps"] = $main->mailman_virtual($GLOBALS["virtual_alias_maps"]);
    $sock = new sockets();
    $PostfixPostmaster = trim($sock->GET_INFO("PostfixPostmaster"));
    if ($PostfixPostmaster == null) {
        return;
    }
    $myhostname = trim($sock->GET_INFO("myhostname"));
    if ($myhostname == null) {
        $myhostname = $users->hostname;
    }
    preg_match("#(.+?)@#", $PostfixPostmaster, $re);
    $PostfixPostmaster_prefix = trim($re[1]);
    $myhostname = trim($myhostname);
    $GLOBALS["virtual_alias_maps"]["{$PostfixPostmaster_prefix}@{$myhostname}"] = "{$PostfixPostmaster_prefix}@{$myhostname}\t{$PostfixPostmaster}";
    $GLOBALS["virtual_alias_maps"][$PostfixPostmaster] = "{$PostfixPostmaster}\t{$PostfixPostmaster}";
    $GLOBALS["virtual_alias_maps"]["root@{$myhostname}"] = "root@{$myhostname}\t{$PostfixPostmaster}";
    $GLOBALS["virtual_alias_maps"]["postmaster"] = "postmaster\t{$PostfixPostmaster}";
    $GLOBALS["virtual_alias_maps"]["MAILER-DAEMON"] = "MAILER-DAEMON\t{$PostfixPostmaster}";
    $GLOBALS["virtual_alias_maps"]["root"] = "root\t{$PostfixPostmaster}";
    /*$sql="SELECT `email` FROM postfix_relais_domains_users";
    	$q=new mysql();
    	$results=$q->QUERY_SQL($sql,"artica_backup");
    	if(!$q->ok){echo "$q->mysql_error\n";}	
    	while($ligne=@mysql_fetch_array($results,MYSQL_ASSOC)){	
    		$GLOBALS["virtual_alias_maps"][$ligne["email"]]="{$ligne["email"]}\t{$ligne["email"]}";
    	}
    	
    	* see trusted_smtp_domain
    		DOMAIN_TRUSTED_NO_USERDB_TEXT
    	*/
    $GLOBALS["alias_maps"][] = "postmaster:{$PostfixPostmaster}";
    $GLOBALS["alias_maps"][] = "MAILER-DAEMON:{$PostfixPostmaster}";
    $GLOBALS["alias_maps"][] = "root:{$PostfixPostmaster}";
    if ($PostfixPostmaster_prefix != null) {
        if (!isset($GLOBALS["alias_maps_mem"][$PostfixPostmaster_prefix])) {
            $GLOBALS["alias_maps"][] = "{$PostfixPostmaster_prefix}:{$PostfixPostmaster}";
        }
    }
}