Monday, July 24th, 2017

Dovecot IMAP для XMail

Published on Март 30, 2009 by   ·   Комментариев нет

Введение
———

Появилась задача прикрутить WEB-интерефейс к XMail. После недолгих
поисков, был найден PHP-скрипт,
позволяющий вытаскивать данные об учетных записях из XMail.

Устанавливаем dovecot

        # wget http://dovecot.org/releases/1.1/dovecot-1.1.3.tar.gz
        # tar -xzf dovecot-1.1.3.tar.gz
        # cd dovecot-1.1.3

Т.к. мне не нужно ни чего кроме обычного IMAP, то отказываюсь от лишнего
балласта.

        # ./configure --enable-static \
            --disable-ipv6 \
            --without-pam \
            --without-shadow \
            --without-pop3d \
             --without-ssl
        # make
        # make install

Конфиг /usr/local/etc/dovecot.conf

        base_dir = /var/run/dovecot/
        login_dir = /var/run/dovecot/login

        protocols = imap

        disable_plaintext_auth = no
        ssl_disable = yes

        info_log_path = /var/MailRoot/logs/dovecot-info.log
        log_path = /var/MailRoot/logs/dovecot.log
        log_timestamp = "%b %d %H:%M:%S "

        mail_debug = no                                                                                                                                            
        auth_debug = no
        auth_debug_passwords = no      

        login_chroot = yes
        login_user = dovecot

        # mail_uid не должен быть определен в passwd. Рекомендуется использовать "нереальные" uid от 30000 и выше.
        mail_uid=50000
        mail_gid=dovecot

        # Приводит имя пользователя к нижнему регистру
        auth_username_format = %Lu

        mail_location = maildir:/var/MailRoot/domains/%d/%n/Maildir

        protocol imap {
           login_executable = /usr/local/libexec/dovecot/imap-login
           mail_executable = /usr/local/libexec/dovecot/imap
   
        }

        auth default {
           verbose = yes
           mechanisms = plain
           passdb passwd-file {
              args = username_format=%u /var/MailRoot/dovecotusers.tab
             
           }
           userdb passwd-file {
              args = username_format=%u /var/MailRoot/dovecotusers.tab
           }
           user = root
        }

Подготавливаем XMail

Т.к. XMail хранит папки учетных записей MailBox в том же регистре, что и
имя пользователя, то мы получаем регистрозависимость dovecot. Я
переконвертил в mailusers.tab имена пользователей и их папки в нижний
регистр. Ниже привожу скрипт конвертации. Запускать его надо из каталога
XMail (/var/MailRoot).

Скрипт conv_mailusers.sh:

        #!/bin/sh

        # 1. Convert mailusers.tab
        cp mailusers.tab mailusers.tab.backup
        cat mailusers.tab.backup | sed 's/\([^\t]*\t"\)\([^\t]*\)\("\t[^\t]*\t[^\t]*\t"\)\([^"]*\)/\L\1\2\E\3\L\4\E/' > mailusers.tab

        # 2. Convert domain folder structure
        cd domains
        for domain in `cat ../domains.tab | sed 's/\"//g'`
        do
           cd $domain
           for dir in `ls -1`
           do
              ddir=`echo $dir | tr A-Z a-z`
              test -e $ddir || mv $dir $ddir
           done
           cd ..      
        done

xmail2dovecot

Мне было удобнее работать с открытыми паролями учетных записей, поэтому
я внес некоторые коррективы в скрипт. Так же исправил некоторые ошибки,
кот. выдавал PHP4:

        diff orig/xmail2dovecot.php  xmail2dovecot.php
        31,33c31,33
        < $XMAILADMINUSERNAME = '';
        < $XMAILADMINPASSWORD = ''; //put your xmail admin pwd
        < $CONFIGURED = '';     //Set this to "YES" when done configuration
        ---
        > $XMAILADMINUSERNAME = 'XMailAdmin';
            > $XMAILADMINPASSWORD = 'XMailPassword'; //put your xmail admin pwd
        > $CONFIGURED = 'YES';      //Set this to "YES" when done configuration
        36,37d35
        <
        <
        101a100
        >   global $l_domain, $l_editname;
        194a194,195
        > $addr1="";
        >
        207c208
        <     if ($addr1 == "??") $addr1 = "";
        ---
        >     if ( $addr1 == "??")  $addr1 = "";
        209c210,211
        <     print "$var[1]@$var[0]:".shadow($var[2])."\n";
        ---
        > #   print "$var[1]@$var[0]:".shadow($var[2])."\n";
        >     print "$var[1]@$var[0]:{plain}".$var[2]."\n";

Создаем базу данных учетных записей для dovecot (редактируем переменные
$XMAILADMINUSERNAME и $XMAILADMINPASSWORD и запускаем):

   # /var/MailRoot/xmail2dovecot.php > /var/MailRoot/dovecotusers.tab

Заключение

Проверяем работу:

        # dovecot
        # telnet127.0.0.1 143
       
        Trying 127.0.0.1...
        Connected to 127.0.0.1.
        Escape character is '^]'.
        * OK Dovecot ready.
        a login AdMiN@ExaMple.ru xxxxxx
        a OK Logged in.
        a logout
        * BYE Logging out
        a OK Logout completed.
        Connection closed by foreign host.












Смотрите также:

Readers Comments (Комментариев нет)




Да человек я, человек! =)

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]