PHP скрипт за имейл на аминистратора
Ако сте чели статията за настройка на имейл сървър, бързо осъзнавате, че добавянето на нов акаунт за електронната поща е доста сложно, комбинацията от добавяне на MySQL база данни в таблици и създаване на папки на хард диска. Това може лесно да бъдат автоматизирано с PHP и аз ще ви покажа как.
CODE
Горният скрипт (имейл admin.php) използва простият клас MySQL и ще бъдат включени по-долу в скриптове, които всъщност са от командния ред.
CODE
Това ще добави нов имейл адрес към базата данни и / Var / макара / vmail. Имайте предвид, че правим проверки на директорията и създаваме несъществуващи директории, независимо от това, дали вече съществуваг в базата данни или не.
Това се дължи на факта, че вече имате информация в базата данни, която не е отразена в vmail папката, така че няма да навреди да се опитате да създадете папки, така или иначе.
Пример-php email-add.php henrik password domain.com
CODE
Накрая добавеният скрипт псевдоним, който не трябва да се използва, ако домейна не е хостван на сървър. Правилното използване е например псевдоним от 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 скрипт.
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; } |
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 скрипт.





