Решено: скелет maildir

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Chebyrashka
Сообщения: 21

Решено: скелет maildir

Сообщение Chebyrashka »

Проблема такая, стоит связка postfix+dovecot+mysql+postfixadmin, при создании ящика в нем создаються 3 папки cur, new, tmp. Надо сделать так чтобы еще создавалась папка .Spam, как это сделать? я немогу найти скрипт который генерит эти папки (( когда я логинюсь на ящик через squirrelmail или TB они сами еще создают дополнительные папки, но их править это невариант, ибо тогда надо будет чтобы каждый хоть раз через них заходил...
Спасибо сказали:
Аватара пользователя
mandreika
Сообщения: 217
ОС: Debian 3,4,5,6

Re: Решено: скелет maildir

Сообщение mandreika »

Как заводите ящик?
Спасибо сказали:
Chebyrashka
Сообщения: 21

Re: Решено: скелет maildir

Сообщение Chebyrashka »

в смысле как? захожу в постфикс админ и завожу :)

у меня авторизация через мускул, пользователи которых я создаю виртуальные, и им создается такой скелет
Спасибо сказали:
Chebyrashka
Сообщения: 21

Re: Решено: скелет maildir

Сообщение Chebyrashka »

скорее даже немного не так, мне не надо менять скелет maildir, а просто надо чтобы при создании ящика в нем создавалась папка .Spam
Спасибо сказали:
Chebyrashka
Сообщения: 21

Re: Решено: скелет maildir

Сообщение Chebyrashka »

у меня появилась догадка... можно сделать такой скрипт

#!/bin/bash
maildirmake.dovecot .Spam

он будет создавать нужную папку и надо прописать его выполнение я думаю где то в постфикс админе, в файле который создает пользователя... токо как это сделать? он написан на пхп, а с ним я не общался никогда...
Спасибо сказали:
Chebyrashka
Сообщения: 21

Re: Решено: скелет maildir

Сообщение Chebyrashka »

Во! я нашел в постфикс админе опции по созданию папок дополнительный в config.inc.php

$CONF['create_mailbox_subdirs']=array('Spam');
$CONF['create_mailbox_subdirs_host']='localhost';

Токо вот при создании потом пользователя он мне пишет такое....

Сообщение отправлено!
Почтовый ящик был успешно создан, но в нем не удалось создать (некоторые) стандартные папки

Где косяк ?
Спасибо сказали:
Chebyrashka
Сообщения: 21

Re: Решено: скелет maildir

Сообщение Chebyrashka »

может быть это из за прав доступа? права на папку вирт пользователя 700 для vmail:mail...

или нет.... есть такие опции
$CONF['create_mailbox_subdirs_hostoptions']=array('novalidate-cert','norsh');
$CONF['create_mailbox_subdirs_hostport']=;
папки создаются imap'ом, у меня настроен TLS/SSL, imap ssl у меня на 993 порту, а SMTPS на 465, что вписывать в эти опции? есть ссылочка на следующие флаги
http://www.php.net/manual/en/function.imap-open.php
Спасибо сказали:
Chebyrashka
Сообщения: 21

Re: Решено: скелет maildir

Сообщение Chebyrashka »

папки создает PostfixAdmin вот такой функцией

Код: Выделить всё

function create_mailbox_subfolders($login,$cleartext_password)
{
    global $CONF;

    if (empty($login))
    {
        trigger_error('In '.__FUNCTION__.': empty $login',E_USER_ERROR);
        return FALSE;
    }

    if (!isset($CONF['create_mailbox_subdirs']) || empty($CONF['create_mailbox_subdirs'])) return TRUE;

    if (!is_array($CONF['create_mailbox_subdirs']))
    {
        trigger_error('create_mailbox_subdirs must be an array',E_USER_ERROR);
        return FALSE;
    }

    if (!isset($CONF['create_mailbox_subdirs_host']) || empty($CONF['create_mailbox_subdirs_host']))
    {
        trigger_error('An IMAP/POP server host ($CONF["create_mailbox_subdirs_host"]) must be configured, if sub-folders are to be created',E_USER_ERROR);
        return FALSE;
    }

    $s_host=$CONF['create_mailbox_subdirs_host'];
    $s_prefix=$CONF['create_mailbox_subdirs_prefix'];
    $s_options='';
    $s_port='';

    if (
        isset($CONF['create_mailbox_subdirs_hostoptions'])
        && !empty($CONF['create_mailbox_subdirs_hostoptions'])
            ) {
                if (!is_array($CONF['create_mailbox_subdirs_hostoptions']))
                {
                    trigger_error('The $CONF["create_mailbox_subdirs_hostoptions"] parameter must be an array',E_USER_ERROR);
                    return FALSE;
                }
                foreach ($CONF['create_mailbox_subdirs_hostoptions'] as $o)
                {
                    $s_options.='/'.$o;
                }
            }

    if (isset($CONF['create_mailbox_subdirs_hostport']) && !empty($CONF['create_mailbox_subdirs_hostport']))
    {
        $s_port=$CONF['create_mailbox_subdirs_hostport'];
        if (intval($s_port)!=$s_port)
        {
            trigger_error('The $CONF["create_mailbox_subdirs_hostport"] parameter must be an integer',E_USER_ERROR);
            return FALSE;
        }
        $s_port=':'.$s_port;
    }

    $s='{'.$s_host.$s_port.$s_options.'}';

    sleep(1); # give the mail triggering the mailbox creation a chance to do its job

   $i=@imap_open($s,$login,$cleartext_password);
    if (FALSE==$i)
    {
        error_log('Could not log into IMAP/POP server: '.imap_last_error());
        return FALSE;
    }

    foreach($CONF['create_mailbox_subdirs'] as $f)
    {
        $f='{'.$s_host.'}'.$s_prefix.$f;
        $res=imap_createmailbox($i,$f);
        if (!$res) {
            @imap_close($i);
            return FALSE;
        }
        @imap_subscribe($i,$f);
    }

    @imap_close($i);
    return TRUE;
}

но я незнаю пхп....
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Решено: скелет maildir

Сообщение Ленивая Бестолочь »

ну вот здесь он проходит по массивы $CONF['create_maildir_subdirs'] и для каждого его элемента вызывает imap_createmailbox()
Chebyrashka писал(а):
19.12.2009 09:38
foreach($CONF['create_mailbox_subdirs'] as $f)
{
$f='{'.$s_host.'}'.$s_prefix.$f;
$res=imap_createmailbox($i,$f);
if (!$res) {
@imap_close($i);
return FALSE;
}
@imap_subscribe($i,$f);
}

так что, видимо, вы правильно засунули Spam в $CONF['create_maildir_subdirs'].
покажите функцию imap_createmailbox тогда.

postfixadmin - это вообще что такое? веб интерфейс?
он из апача работает?
а апач под каким юзером запущен?
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Chebyrashka
Сообщения: 21

Re: Решено: скелет maildir

Сообщение Chebyrashka »

Postfixdmin это веб морда для управления ящиками, паролями, пользователями и т.д.
Да он работает из апача
А апач запущен от рута
Функция imap_createmailbox я понятия не имею где растет, она не из постфикс админа, поиск в его директории ничего не дал, я думаю что эта функция довекота... но там я не знаю где ее искать, пробовал в директориях довекотовых, но тоже поиск неудался, да и файлы там не на sh, там ельфы какие то ))) я неособо еще в этом разбираюсь и незнаю что это )
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Решено: скелет maildir

Сообщение Ленивая Бестолочь »

ну я прям не знаю :)
давай проведем маленький эксперимент (глупость конечно, но может поможет):

Код: Выделить всё

$ftest = fopen('/tmp/test', 'w');
fwrite($ftest, var_dump($CONF['create_mailbox_subdirs']));
fclose($fp);

вставте перед

Код: Выделить всё

foreach($CONF['create_mailbox_subdirs'] as $f)

посмотрим, как остальные поддиректории описаны.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Chebyrashka
Сообщения: 21

Re: Решено: скелет maildir

Сообщение Chebyrashka »

чего то я недопонял... и что должно произойти ?
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Решено: скелет maildir

Сообщение Ленивая Бестолочь »

создаться файлик /tmp/test, в котором будет значение массива $CONF['create_mailbox_subdirs'] на момент вызова этой функцией.
если все директории создаются в этом месте можно поглядеть - как описаны в массиве другие.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Chebyrashka
Сообщения: 21

Re: Решено: скелет maildir

Сообщение Chebyrashka »

не создасться у меня никакого файлика, функция обраваетья на чем то и выдает false, до создания папок не доходит дело
Спасибо сказали:
Chebyrashka
Сообщения: 21

Re: Решено: скелет maildir

Сообщение Chebyrashka »

проблема решена....
дело было в настройках
$CONF['create_mailbox_subdirs_host']='192.168.0.1';
$CONF['create_mailbox_subdirs_prefix']='';
$CONF['create_mailbox_subdirs_hostport']=993;
$CONF['create_mailbox_subdirs_hostoptions']=array('imap','ssl','novalidate-cert');
вот теперь все работает
Спасибо сказали:
Аватара пользователя
BaZilio
Сообщения: 457
Статус: Say оПХБЕР again!

Re: Решено: скелет maildir

Сообщение BaZilio »

Мне на этой неделе тоже понадобилось создавать папку .Spam.
Раньше postfix сам создавал папки пользователя, если пользователь был добавлен в базу и ему приходило письмо. Теперь я использую maildrop, чтобы тот раскладывал письма с пометкой "[SPAM]" в папку .Spam, но каталог почты пользователя теперь приходится создавать руками.

Наверное надо будет написать shell-скрипт для добавления пользователя, чтобы он и в базу логин добавлял, и maildirmake запускал, папку .Spam там создавал, и права нужные выставлял.

Windows XP:
Netbook - Acer Aspire One A150.
Debian Squeeze amd64:
Laptop - Acer TravelMate 5520G.
Laptop_work - Toshiba Satellite C660.
Windows 7 x64:
Desktop - Core2Duo 6600 2.4GHz/6 GB/i965/GeForce 9500GT.

4 the lulz!
Спасибо сказали: