ispCP - Board - Support
Создание почтовых ящиков без GUI - Printable Version

+- ispCP - Board - Support (http://www.isp-control.net/forum)
+-- Forum: ispCP Omega International Area (/forum-22.html)
+--- Forum: Russian Corner (/forum-53.html)
+--- Thread: Создание почтовых ящиков без GUI (/thread-12232.html)



Создание почтовых ящиков без GUI - Alien85 - 11-25-2010 05:41 AM

Как используя ispcp добавлять и удалять почтовые ящики у одного домена не используя WEB интерфейс ispcp?

Версия: 1.0.7 RC2, Debian Lenny 5
Искал в php файлах, не очень понятно
единственное, что нашел, это: /var/www/ispcp/engine/ispcp-mbox-mngr
но как его использовать из php?

Все это нужно для создания почтовой службы в одном из доменов на сервере с ispcp. Естественно регистрация e-mail-ов должна быть в этой самой почтовой службе (все написано на php). Интерфейс для получения и отправки почты уже есть, используя /var/mail/virtual/*
Интерфейс для создания и удаления ящиков есть, но для mysql (на старом сервере postfix использовал mysql, а тут файлы)...

Если кто-нибудь что-нибудь знает, подскажите.


RE: Создание почтовых ящиков без GUI - Alien85 - 11-25-2010 01:00 PM

Вот скрипт создания ящиков:
Для работы нужно добавить пользователя mysql ispcp_mails

Code:
#!/bin/bash
# by calocen@gmail.com
# ver.: 1.0
# 01/02/2008
# creating a new email account in a control panel structure with default config
# parameters:
# 1: email_account@domain.tld where domain.tld must be in control panel database and
# email_account shold not be create even as an alias
# 2: password
# 3: [rebuild]: if true, then do a rebuild of rqst-orders

DEBUG="true"

# syntax control
if [ $# -lt 2 ] ; then
    echo -e "\n\nSyntax: "
    echo -e "\t $0 <name@domain.tld> <account_password>"
    echo -e "\t Where domain.tld must exists in ispcp panel"
    exit 01
fi
cEmail=$1
cPas=$2
[ -z $3 ] && bRebuild="false"
[ ! -z $3 ] && bRebuild="true"
$DEBUG && echo $bRebuild
cAcc=`echo $cEmail | cut -f1 -d"@"`
cDom=`echo $cEmail | cut -f2 -d"@"`

# check if domain exists and get domain Id
nDomID=$(mysql ispcp -ss -u ispcp_mails -pMYPASSWORD -n -e "SELECT domain_id FROM domain WHERE domain_name='$cDom';")

if [ -z $nDomID ]
then
    echo -e "\n\n $cDom not exists, please add it before add email accounts"
    exit 02
fi

# Check if email accounts exists
nMailID=$(mysql ispcp -ss -u ispcp_mails -pMYPASSWORD -n -e "SELECT mail_id FROM mail_users WHERE domain_id='$nDomID' AND mail_acc='$cAcc';")
$DEBUG && echo -e "nDomID:$nDomID\tcDom:$cDom\tcAcc:$cAcc"
if [ ! -z $nMailID ]
then
    echo -e "\n\nE-Mail account is exists"
    echo -e "\nnDomID:$nDomID\tcDom:$cDom\tcAcc:$cAcc"
    exit 03
fi

# composing email record in mail_users table
cSql="INSERT INTO mail_users(mail_acc, mail_pass, mail_forward, domain_id, mail_type, sub_id, status, mail_addr) VALUES ('$cAcc', '$cPas', '_no_', $nDomID, 'normal_mail', 0, 'change', '$cEmail');"
$DEBUG &&  echo -e "$cSql"
mysql ispcp -u ispcp_mails -pMYPASSWORD -e "$cSql"

if [ "$?" -ne "0" ] ; then exit 1 ; fi

# rebuild virtual aliases
/usr/sbin/postmap /etc/postfix/ispcp

# rebuild mail accounts if set rebuild parameter
$bRebuild && /var/www/ispcp/engine/ispcp-rqst-mngr

вот скрипт для удаления ящиков, только алиасы он не удаляет...
Code:
#!/bin/bash
# by alien.ru@mail.ru from by calocen@gmail.com (ispcp_add_email.sh)
# ver.: 1.0
# 25/11/2010
# remove email account in a control panel structure with default config
# parameters:
# 1: email_account@domain.tld where (aliases not deleted)
# 2: [rebuild]: if true, then do a rebuild of rqst-orders

DEBUG="true"

# syntax control
if [ $# -lt 1 ] ; then
    echo -e "\n\nSyntax: "
    echo -e "\t $0 <name@domain.tld>"
    exit 01
fi
cEmail=$1
[ -z $2 ] && bRebuild="false"
[ ! -z $2 ] && bRebuild="true"
$DEBUG && echo $bRebuild
cAcc=`echo $cEmail | cut -f1 -d"@"`
cDom=`echo $cEmail | cut -f2 -d"@"`

# check if domain exists and get domain Id
nDomID=$(mysql ispcp -ss -u ispcp_mails -pMYPASSWORD -n -e "SELECT domain_id FROM domain WHERE domain_name='$cDom';")

if [ -z $nDomID ]
then
    echo -e "\n\n $cDom not exists, please add it before add email accounts"
    exit 02
fi

# Check if email accounts exists
nMailID=$(mysql ispcp -ss -u ispcp_mails -pMYPASSWORD -n -e "SELECT mail_id FROM mail_users WHERE domain_id='$nDomID' AND mail_acc='$cAcc';")
$DEBUG && echo -e "nDomID:$nDomID\tcDom:$cDom\tcAcc:$cAcc"
if [ -z $nMailID ]
then
    echo -e "\n\nE-Mail account is not exists"
    echo -e "\nnDomID:$nDomID\tcDom:$cDom\tcAcc:$cAcc"
    exit 03
fi

# remove email record in mail_users table
cSql="DELETE FROM mail_users WHERE mail_id='$nMailID' LIMIT 1;"
$DEBUG &&  echo -e "$cSql"
mysql ispcp -u ispcp_mails -pMYPASSWORD -e "$cSql"

if [ "$?" -ne "0" ] ; then exit 1 ; fi

# rebuild virtual aliases
/usr/sbin/postmap /etc/postfix/ispcp

# rebuild mail accounts if set rebuild parameter
$bRebuild && /var/www/ispcp/engine/ispcp-rqst-mngr

rm -R /var/mail/virtual/$cDom/$cAcc

сейчас проблема в том, что этот скрипт не удаляет ящики в файлах /etc/postfix/ispcp/* и /var/www/ispcp/postfix/* (последний каталог написал на память), да и последнюю строчку rm -R /var/mail/virtual/$cDom/$cAcc я сам добавил, все это должен делать ispcp, но как?