Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Виртуальные пользователи в qmail+courier-imap без SQL БД
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
ladserg
n00b
n00b


Joined: 01 Nov 2004
Posts: 65

PostPosted: Wed Mar 23, 2005 9:47 am    Post subject: Виртуальные пользователи в qmail+cou Reply with quote

Потребовались виртуальные пользователи в qmail+courier-imap, vpopmail ставить или примотать все это к LDAP не могу по различным соображениям, начитавшись написал скрипт, автоматизирующий все это. Для тех, кому это кому это интересно привожу скрипт на bash'е:

---------- mailuser ------------------
Code:

#!/bin/bash
#----------------------------------------------------------------
# Данные переменные необходимо изменить на свои
#----------------------------------------------------------------

# Почтовый домен(хост), в котором находится пользователь
# user_name@$MAIL_DOMAIN
MAIL_DOMAIN='tty.perm.ru'

# Установки реально существующего пользователя который будет
# использоваться для хранения почты
# (требуются только для добавления пользователя).
# Если у вас нет такого пользователя, то либо создайте его, либо
#  укажите другого пользователя.
# В домашнем каталоге данного пользователя будет храниться
# почта виртуальных пользователей.
VIRTUAL_USER='virtmail'
VIRTUAL_UID='1010'
VIRTUAL_GID='100'
VIRTUAL_HOME='/home/virtmail'

#----------------------------------------------------------------
# Каталог пользователей qmail'а
#
# Если у вас qmail находится в другом каталоге, или путь каталога
# пользоватей иной, то измените данную переменную на првильный путь
#
QMAIL_USERSDIR='/var/qmail/users'
#----------------------------------------------------------------

die() {
    echo $*
    exit 1
}

[ ! -d $QMAIL_USERSDIR ] && die "Не найден каталог $QMAIL_USERSDIR"
[ ! -f $QMAIL_USERSDIR/assign ] && echo . > $QMAIL_USERSDIR/assign

this.passwd() {
    USER_NAME=''
    shift
    for i in $*; do
        case "$1" in
            *)
                [ -n "$USER_NAME" ] && \
                    die "Неверный синтаксис командной строки."
                USER_NAME="$i"
                ;;
        esac
    done
    [ -z "$USER_NAME" ] && die "Укажите имя пользователя"
   
    [ -n "`grep "^=$USER_NAME:" $QMAIL_USERSDIR/assign`" ] || \
        die "Такой пользователь не существует!"

    LINE=`grep  "^=$USER_NAME:" $QMAIL_USERSDIR/assign| sed "s/^=//g"`
    USER_NAME=`echo $LINE | cut -d ':' -f 1`
    VIRTUAL_USER=`echo $LINE | cut -d ':' -f 2`
    VIRTUAL_UID=`echo $LINE | cut -d ':' -f 3`
    VIRTUAL_GUID=`echo $LINE | cut -d ':' -f 4`
    USER_HOME=`echo $LINE | cut -d ':' -f 5`

    userdbpw -md5 | userdb $MAIL_DOMAIN/$USER_NAME \
        set uid=$VIRTUAL_UID \
            gid=$VIRTUAL_GUID \
            home=$USER_HOME \
            mail=$USER_HOME/.maildir/ systempw
   
    makeuserdb
}

this.add() {
    USER_NAME=''
    shift
    for i in $*; do
        case "$1" in
            *)
                [ -n "$USER_NAME" ] && \
                    die "Неверный синтаксис командной строки."
                USER_NAME="$i"
                ;;
        esac
    done
    [ -z "$USER_NAME" ] && die "Укажите имя пользователя"
   
    [ -n "`grep "^=$USER_NAME:" $QMAIL_USERSDIR/assign`" ] && \
        die "Такой пользователь уже существует!"
   
    su virtmail -c "mkdir $VIRTUAL_HOME/$USER_NAME"
    su virtmail -c "maildirmake $VIRTUAL_HOME/$USER_NAME/.maildir/"
    su virtmail -c \
        "echo $VIRTUAL_HOME/$USER_NAME/.maildir/> $VIRTUAL_HOME/$USER_NAME/.qmail"
       
    sed -i "s%^\s*\.\s*$%=$USER_NAME:$VIRTUAL_USER:$VIRTUAL_UID:$VIRTUAL_GID:$VIRTUAL_HOME/$USER_NAME/:::\n.%g" $QMAIL_USERSDIR/assign
    qmail-newu
       
    userdbpw -md5 | userdb $MAIL_DOMAIN/$USER_NAME \
        set uid=$VIRTUAL_UID \
        gid=$VIRTUAL_GUID \
        home=$VIRTUAL_HOME/$USER_NAME \
        mail=$VIRTUAL_HOME/$USER_NAME/.maildir/ systempw
                                   
    makeuserdb
}

this.help () {
    echo
    echo "      Менеджер виртуальных почтовых пользователей."
    echo
    echo "Способ вызова:"
    echo
    echo "  mailuser [команда]"
    echo
    echo "Описание комманд:"
    echo
    echo "  add    <имя пользователя> - добавляет указанного пользователя"
    echo "  passwd <имя пользователя> - изменяет пароль указанного пользователя"
    echo "  del    <имя пользователя> - удаляет указанного пользователя"
    echo "  --help                    - вызов справки"
    echo
}

this.del ()
{
    USER_NAME=''
    shift
    for i in $*; do
        case "$1" in
            *)
                [ -n "$USER_NAME" ] && \
                    die "Неверный синтаксис командной строки."
                USER_NAME="$i"
                ;;
        esac
    done
    [ -z "$USER_NAME" ] && die "Укажите имя пользователя"
   
    [ -n "`grep "^=$USER_NAME:" $QMAIL_USERSDIR/assign`" ] || \
        die "Такой пользователь не существует!"

    sed -i "/^=$USER_NAME:.*./ c\\" $QMAIL_USERSDIR/assign
    qmail-newu
   
    userdb $MAIL_DOMAIN/$USER_NAME del                                   
    makeuserdb
}

case "$1" in
    --help)
        this.help
        exit 0
        ;;
    -h)
        this.help
        exit 0
        ;;
    passwd)
        this.passwd $*
        exit 0
        ;;
    add)
        this.add $*
        exit 0
        ;;
    del)
        this.del $*
        exit 0
        ;;
    *)
        ;;
esac
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum