Начало Новини Маркет Проекти Форум ИТ Работа Уроци Скриптове WiFi точки Още Вход


PHP скрипт за имейл на аминистратора

От Mutatos / 29.10.2011 19:46
Размер на шрифта: A | A | A

Ако сте чели статията за настройка на имейл сървър, бързо осъзнавате, че добавянето на нов акаунт за електронната поща е доста сложно, комбинацията от добавяне на MySQL база данни в таблици и създаване на папки на хард диска. Това може лесно да бъдат автоматизирано с  PHP и аз ще ви покажа как.

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$GLOBALS['db_host'] = 'localhost';
$GLOBALS['db_user'] = 'user';
$GLOBALS['db_pass'] = 'pwd';
$GLOBALS['db_name'] = 'mailserver';
$GLOBALS['vmail_dir']    = "/var/spool/vmail";
 
include_once('/opt/lib/Mysql.php');
 
if(!is_dir($GLOBALS['vmail_dir']))
   
shell_exec("mkdir {$GLOBALS['vmail_dir']}");
 
function getDomainId($domain){
   
return Mysql::tbl('virtual_domains')->getValue($domain, 'name', 'id');
}
 
function domainExists($domain){
   
$res = Mysql::tbl('virtual_domains')->findOne($domain, 'name');
   
return empty($res) ? false : true;
}
 
function emailExists($email){
   
$res = Mysql::tbl('virtual_users')->findOne($email, 'email');
   
return empty($res) ? false : true;
}
 
function aliasExists($alias){
   
$res = Mysql::tbl('virtual_aliases')->findOne($alias, 'source');
   
return empty($res) ? false : true;
}
Горният скрипт (имейл admin.php) използва простият клас MySQL и ще бъдат включени по-долу в скриптове, които всъщност са от командния ред.


CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
      if(!is_dir("{$GLOBALS['vmail_dir']}/$domain/$user/$dir"))
           
shell_exec("mkdir {$GLOBALS['vmail_dir']}/$domain/$user/$dir");
       
shell_exec("chmod 700 {$GLOBALS['vmail_dir']}/$domain/$user/$dir");
    }
}
   
shell_exec("chmod 700 {$GLOBALS['vmail_dir']}/$domain/$user");
 
if(!emailExists($email)){
   
$domain_id = getDomainId($domain);
  
Mysql::tbl('virtual_users')->insertArray(array('email' => $email, 'password' => md5($password), 'domain_id' => $domain_id));
}
 
shell_exec("chown -R virtual:virtual /var/spool/vmail");



Това ще добави нов имейл адрес към базата данни и / Var / макара / vmail. Имайте предвид, че правим проверки на директорията и създаваме  несъществуващи директории, независимо от това, дали вече съществуваг в базата данни или не.

Това се дължи на факта, че вече имате информация в базата данни, която не е отразена в vmail папката, така че няма  да навреди да се опитате да създадете папки, така или иначе.

Пример-php email-add.php henrik password domain.com

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
include_once('email-admin.php');
$alias            = $_SERVER['argv'][1];
$original        = $_SERVER['argv'][2];
$password         = $_SERVER['argv'][3];
$domain         = $_SERVER['argv'][4];
 
$alias_email = "$alias@$domain";
 
shell_exec("php email-add.php $original $password $domain");
 
if(!aliasExists($alias_email) && domainExists($domain)){
  
Mysql::tbl('virtual_aliases')->insertArray(array(
       
'domain_id'     => getDomainId($domain),
       
'source'         => $alias_email,
       
'destination'     => "$original@$domain"
   
));
}


Накрая добавеният скрипт псевдоним, който не трябва да се използва, ако домейна не е хостван на сървър. Правилното използване е например псевдоним от firstname@domain.com  до  firstname.lastname @ domain.com, който домейн се хоства в сървъра.

Пример: използвай php email-alias.php henrik henrik.sarvell password domain.com

Обърнете внимание, как в този случай henrik.sarvell @ domain.com адрес не е необходимо да съществува, преди псевдоним Хенрик да се добави, тъй като ние използваме имейл add.php от вътрешността на имейл alias.php скрипт.
 

Етикети: script | admin | PHP email | имейл | скрипт | PHP
Статистика
Погледнат: пъти
Гласове: --
Оценка:
Действие
 



myTech.bg © 2004 - 2011 | Контакти | За реклама