Posts Tagged ‘ Mail

Проблемка с правами после миграции на другой сервер ISP Manager-ом

После миграции на другой сервер ISP Manager-ом в почтовых логах то и дело появлялись строчки примерно такого содержания:

Jul 20 17:23:40 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:26:40 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:29:43 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:32:46 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:35:46 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:38:46 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:41:46 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:44:49 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:47:49 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:50:49 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)
Jul 20 17:54:07 server dovecot: POP3(mailuser@some.domain.ua): open(/home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log) failed: Permission denied (euid=1069(virtuser_1069) egid=1006(ISPUser) missing +r perm: /home/ISPUser/data/email/some.domain.ua/mailuser/mail/.imap/INBOX/dovecot.index.log)

В результате некоторых телодвижений в shell было выяснено что некорректно выставились права на домашние директории пользователям со старого сервера! Точнее неправильным был owner хомяка, группа стояла правильно! Для новосозданных все отлично, а со старыми лажа ….

Поскольку старых пользователей много и руками вбивать команду chown для каждого из них было совсем лениво — написал небольшой скриптик. Вот его содержание:

#!/usr/local/bin/bash
USERS=`ls /home/ISPUser/data/email/some.domain.ua`
for REAL_USER in $USERS
  do
    VIRTUSER=`grep "${REAL_USER}:" /etc/passwd |grep some.domain.ua |cut -d':' -f1`
    VIRTUSER_HOME=`grep "${REAL_USER}:" /etc/passwd |grep some.domain.ua |cut -d':' -f6`
    #   echo $VIRTUSER:ISPUser $VIRTUSER_HOME
    chown -R $VIRTUSER:ISPUser $VIRTUSER_HOME
done

Перед непосредственным использованием сего скриптика рекомендую сначала закоментить строчку с chown и разкоментить ту которая выше с echo — она показывает собственно что будет делать chown. Если ее вывод вас устраивает — возвращайте в изначальное состояние и используйте на здоровье 🙂
У меня скрипт отработал за несколько секунд, и полностью справился со своей задачей! Проблемка решена!

Осталось только пожелать удачных переездов 🙂

Адресная книга LDAP с дополнительными полями в Roundcube

Поставил на работе себе Roundcube в качестве Mail клента. Удобно — из любой машинки внутрисети по WEB имею доступ к своей почте 🙂 Установка самого Roundcube совсем тривиальная. Опишу очень коротко. Действуем по схеме:

  • Скачать последнюю версию из офсайта: http://www.roundcube.net/download Рекомендую качать версию stable — она гарантированно рабочая! За остальное никто не ручается 🙂
  • Розпаковать туда куда вам нужно.
  • Настроить apache
  • Установить Roundcube. Действовать согласно описанию из файлика INSTALL который есть в архиве с roundcube.

В результате проделанного выше программка у нас уже стоит — осталось только чуть настроить! Я установил себе roundcube в /opt/rouncube/ далее это будет видно 🙂

Прога у меня заработала после всего выше проделанного без каких бы то ни было проблем. Все отлично. Читаем почту … отправляем. Рулим сообщениями, папками, подписями и тд. Все очень удобно и шустро. Есть адресная книга … но локальная! А захотелось всетаки LDAP-ную книгу 🙂 Вот тут и начались танцы с бубном. Менял много чего в файлике main.inc.php для того чтобы настроить саму связь с сервером LDAP и поля которые одтуда надо брать. Итак, что имеем:

Работающий roundcube версии 3.1 а хотим ничего не сломав получить еще и LDAP Address Book 🙂 желательно  с автодополнением.

Пользователь ldapuser@my.domain с паролем 123. Доменный пользователь, которому достаточно дать права только на чтение LDAP и все! Это может быть просто технический пользователь … специально созданный для таких задач 🙂

LDAP Server — controller.my.domain

Приведу изначальный вид конфига main.inc.php чтобы понять откуда надо двигаться в настройке. Вот часть которая нас интуресует:

// In order to enable public ldap search, configure an array like the Verisign
// example further below. if you would like to test, simply uncomment the example.
$rcmail_config['ldap_public'] = array();

//
// If you are going to use LDAP for individual address books, you will need to
// set 'user_specific' to true and use the variables to generate the appropriate DNs to access it.
//
// The recommended directory structure for LDAP is to store all the address book entries
// under the users main entry, e.g.:
//
//  o=root
//   ou=people
//    uid=user@domain
//  mail=contact@contactdomain
//
// So the base_dn would be uid=%fu,ou=people,o=root
// The bind_dn would be the same as based_dn or some super user login.
/*
* example config for Verisign directory
*
$rcmail_config['ldap_public']['Verisign'] = array(
  'name'          => 'Verisign.com',
  'hosts'         => array('directory.verisign.com'),
  'port'          => 389,
  'use_tls'        => false,
  'user_specific' => false,   // If true the base_dn, bind_dn and bind_pass default to the user's IMAP login.
  // %fu - The full username provided, assumes the username is an email
  //       address, uses the username_domain value if not an email address.
  // %u  - The username prior to the '@'.
  // %d  - The domain name after the '@'.
  'base_dn'       => '',
  'bind_dn'       => '',
  'bind_pass'     => '',
  'writable'      => false,   // Indicates if we can write to the LDAP directory or not.
  // If writable is true then these fields need to be populated:
  // LDAP_Object_Classes, required_fields, LDAP_rdn
  'LDAP_Object_Classes' => array("top", "inetOrgPerson"), // To create a new contact these are the object classes to specify (or any other classes you wish to use).
  'required_fields'     => array("cn", "sn", "mail"),     // The required fields needed to build a new contact as required by the object classes (can include additional fields not required by the object classes).
  'LDAP_rdn'      => 'mail', // The RDN field that is used for new entries, this field needs to be one of the search_fields, the base of base_dn is appended to the RDN to insert into the LDAP directory.
  'ldap_version'  => 3,       // using LDAPv3
  'search_fields' => array('mail', 'cn'),  // fields to search in
  'name_field'    => 'cn',    // this field represents the contact's name
  'email_field'   => 'mail',  // this field represents the contact's e-mail
  'surname_field' => 'sn',    // this field represents the contact's last name
  'firstname_field' => 'gn',  // this field represents the contact's first name
  'sort'          => 'cn',    // The field to sort the listing by.
  'scope'         => 'sub',   // search mode: sub|base|list
  'filter'        => '',      // used for basic listing (if not empty) and will be used with search queries. example: status=act
  'fuzzy_search'  => true);   // server allows wildcard search
*/


// An ordered array of the ids of the addressbooks that should be searched
// when populating address autocomplete fields server-side. ex: array('sql','Verisign');
$rcmail_config['autocomplete_addressbooks'] = array('sql');

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

$rcmail_config['ldap_public']['WORK'] = array(
  'name'          => 'WORK',
  'hosts'         => array('controller.my.domain'),
  'port'          => 389,
  'use_tls'        => false,
  'user_specific' => false,   // If true the base_dn, bind_dn and bind_pass default to the user's IMAP login.
  // %fu - The full username provided, assumes the username is an email
  //       address, uses the username_domain value if not an email address.
  // %u  - The username prior to the '@'.
  // %d  - The domain name after the '@'.
  'base_dn'       => 'ou="Domain Users", dc=my, dc=domain',
  'bind_dn'       => 'ldapuser@my.domain',
  'bind_pass'     => '123',
  'writable'      => false,   // Indicates if we can write to the LDAP directory or not.
  // If writable is true then these fields need to be populated:
  'ldap_version'  => 3,       // using LDAPv3
  'search_fields' => array('mail', 'cn'),  // fields to search in
  'name_field'    => 'cn',    // this field represents the contact's name
  'email_field'   => 'mail',  // this field represents the contact's e-mail
  'surname_field' => 'sn',    // this field represents the contact's last name
  'firstname_field' => 'gn',  // this field represents the contact's first name
  'phone_field'   => 'telephoneNumber', // telephone
  'mobile_field'  => 'mobile', //added by black_13 (mobile number)
  'company_field' => 'company', //added by black_13 (company)
  'title_field'   => 'title',
  'sort'          => 'cn',    // The field to sort the listing by.
  'scope'         => 'sub',   // search mode: sub|base|list
  'filter'        => '(&(mail=*))', // used for basic listing (if not empty) and will be used with search queries. example: status=act
  'fuzzy_search'  => true);   // server allows wildcard search

// An ordered array of the ids of the addressbooks that should be searched
// when populating address autocomplete fields server-side. ex: array('sql','Verisign');
$rcmail_config['autocomplete_addressbooks'] = array('sql','WORK');

После того как поправили вот таким образом и сохранили, пробуем перезайти в roundcube Теперь если зайти в Контакты (справа вверху) у нас должно появиться еще одна группа с названием WORK. Выбираем ее и видим список контактов взятых с LDAP. Но дополнительные поля пока что отображаться не будут … только cn, mail, sn и gn. Чтобы отобразились допольнительные поля нужно сделать следующее. Правим конфиг /opt/rouncube/program/localization/ru_RU/labels.inc Точнее добавляем туда несколько строк, я добавил в конец, перед ?> вот такое:

$labels['mobile'] = 'Мобильный телефон';
$labels['phone'] = 'Городской телефон';
$labels['company'] = 'Компания';
$labels['title'] = 'Должность';

Дальше, переходим в папку /opt/rouncube/program/steps/addressbook/ и открываем для редактирования файл show.inc В нем находим строчку:

$a_show_cols = array('name', 'firstname', 'surname', 'email');

Меняем на

$a_show_cols = array('company', 'title', 'name', 'firstname', 'surname', 'email', 'phone', 'mobile');

В нужной вам последовательности.

Тоже самое повторяем с конфигами save.inc. Находим строчку:

$a_save_cols = array('name', 'firstname', 'surname', 'email');

И меняем на

$a_save_cols = array('company', 'title', 'name', 'firstname', 'surname', 'email', 'phone', 'mobile');

Повторяем этот же финт с файликом edit.inc Правим строчку:

$a_show_cols = array('name', 'firstname', 'surname', 'email');

до вида:

$a_show_cols = array('company', 'title', 'name', 'firstname', 'surname', 'email', 'phone', 'mobile');

На этом настройка закончена 🙂 Вот скриншот того что получилось:

Чуток пришлось в GIMP помазать скрин — чтобы палива поменьше было, но вобщем результат налицо 🙂 Посути никто нас не заставляет ограничиваться только этими полями. Просто мне они показались важными. Вы можете настроить под себя отображение нужных вам полей и их последовательность.

Главное что мы усвоили как это настраивается 🙂 За сим все … удачи!

Outlook 2003 — Открыть вложение .exe

Вот поставил на одну из машинок с WinXP Outlook вместе с MS Office 2003 который. Ну вроде ничего особенного в нем нету, но вот на засаду с открытием вложений .exe нарвался сразу. Что самое обидное — облазил все возможные настройки которые только смог найти в его интерфейсе. Угробил минут 30, а решения так и не нашел 🙁 Вместо вложения серая надпись «Outlook блокировал доступ к следующим потенциально небезопасным вложениям» и трындец. Решение конечно есть, но как всегда, через то самое место! Regedit оно называется … а вы что подумали? 😀 Информация об этом нашлось лиш на сайте мелкомягких, которую я и применил. Причем там предложено несколько вариантов решения. Очень рекомендую их все почитать — с первых четырех я от души поржал — они какбы для новичков! Последний для профи (ну там так написано) — он реально помогает, а не смешит, поэтому можно использовать 🙂 Читать полностью

OpenBSD — Настраиваем Sendmail MTA в режиме Smart Relay

Статья из серии статей о настройке сервера для небольшого офиса на OpenBSD.

На этот раз коротко опишу о том как подымал MTA (Mail Transfer Agent, подробнее смотри тут) для своего офиссервера работающего на OpenBSD. Сначала стоит упомянуть некоторую предысторию, в результате которой, наш доблесный провайдер Cyfra, заблочил нам 25 порт целяком и полностью, оставив лиш небольшую «лазейку в мир» в виде своего SMTP сервака — smtp.uatele.com. Да собственно предистория то банальность в совершенном виде — поймался на одной из офисных машинок какойто троянчик mailware, который розсылал чего непопадя куда ему только вздумается. С ним конечно коекак пытался справиться SAV 10 — но получалось у него неахти как хорошо. Изза чего, как нам сказала техподдержка цифры, на нас накатали телег (полагаю, в письменном виде) несколько уважаемых в инете контор 🙂

Зараженная машинка в таком вот виде проработала всегото с полдня, наверное — но выход в инет по 25-му порту нам таки заблочили 🙁 Ну да фигня то все! Остался цифровский SMTP — через него можно слать 🙂

Итак, начальные данные такие:

  • Шлем через SMTP провайдера — в нашем случае smtp.uatele.com
  • Необходимо учесть что у сервера smtp.uatele.com есть свои ограничения:
  1. Максимальные размер письма — 8 Метров
  2. Максимальное количество получателей — 15 человек
  • «Слушаем» только на внутресетевом интерфейсе сервера
  • Настроить автозапуск MTA при старте системы

Вроде все! Вперед 🙂

MTA по умолчанию в OpenBSD является Sendmail. По умолчанию значит что он идет в стандартной поставке дистра. Первым что я подумал, когда узнал об этом, было нечто такое: «Этот поросший мхом MTA годится только для пугания одминов-новичков своими конфигами и логами — и больше ниначто!». Но всетаки решил покрутить его для успокоения совести, мол все равно ничего с ним не получится — в итоге поставлю чтото более удобоваримое. Но поглядев в умолчательный конфиг, с удивлением обнаружил, что он какбудто под меня скроен. Задача то у меня совсем тривиальная — такчто править пришлось всегото пару-тройку строчек! И результат для тестирования получился уже спустя полчасика. Вот несколько движений которые сделал я для настройки под свою задачку Sendmail:

Идем в /usr/share/sendmail/cf — именно там лежат заготовочки на все случаи жизни 🙂

root@gw:~ # cd /usr/share/sendmail/cf/

Тут лежат примеры конфигов под разные задачи. Все они доступны только для чтения. Мне понравился конфиг openbsd-proto.mc — поэтому решил использовать его. Сначала сделал его доступным для редактирования коммандой:

root@gw:/usr/share/sendmail/cf# chmod u+w openbsd-proto.mc

После этого открываем конфиг для редактирования (я для этой цели использую ранее установленный vim)

root@gw:/usr/share/sendmail/cf# vim openbsd-proto.mc

С самого начала файла, после опции OSTYPE идет настройка SMART_HOST — это какраз то что нам нужно прописать чтобы наш mail-server отправлял поступающую ему почту через сервер провайдера. Поэтому розкомментируем ее и вписываем SMTP сервер провайдера. У меня вышло так:

OSTYPE(openbsd)dnl
dnl
dnl If you have a non-static IP address you may wish to forward outgoing mail
dnl through your ISP's mail server to prevent matching one of the dialup
dnl DNS black holes.  Just uncomment the following line and replace
dnl mail.myisp.net with the hostname of your ISP'
s mail server.
dnl
define(`SMART_HOST', `smtp.uatele.com')dnl
dnl

Теперь идем ниже до строчки которая начинается опцией DAEMON_OPTIONS — тут указывается где наш MTA будет слушать подключения клиентов. В умолчательном конфиге указан адрес 0.0.0.0 для IPv4 клиентов и :: для IPv6. И еще какието строчки непонятные, короче всего 4 — вот так они выглядят по умолчанию:

DAEMON_OPTIONS(`Family=inet, Address=0.0.0.0, Name=MTA')dnl
DAEMON_OPTIONS(`Family=inet6, Address=::, Name=MTA6, M=O'
)dnl
DAEMON_OPTIONS(`Family=inet, Address=0.0.0.0, Port=587, Name=MSA, M=E')dnl
DAEMON_OPTIONS(`Family=inet6, Address=::, Port=587, Name=MSA6, M=O, M=E'
)dnl

Нам же нужно заставить sendmail слушать только 127.0.0.1 и внутресетевой интерфейс ip которого 192.168.100.2. Поэтому я из этих четырех строчек сделал 2 те что мне надо — получилось вот так:

DAEMON_OPTIONS(`Family=inet, Address=192.168.100.2, Port=25, Name=MTA')dnl
DAEMON_OPTIONS(`Family=inet, Address=127.0.0.1, Port=25, Name=MTA'
)dnl

Ниже еще есть опция где можно прописать сеть клиентов которым разрешено подключаться. Вот что по умолчанию:

dnl Use either IPv4 or IPv6 for outgoing connections.
dnl
CLIENT_OPTIONS(`Family=inet, Address=0.0.0.0')dnl
CLIENT_OPTIONS(`Family=inet6, Address=::'
)dnl
dnl

Тоесть розрешено всем как IPv6 так и IPv4 адресам. Но у меня sendmail должен обслуживать только IPv4 сеть, такчто я исправил на такое:

dnl Use either IPv4 or IPv6 for outgoing connections.
dnl
CLIENT_OPTIONS(`Family=inet, Address=0.0.0.0')dnl
dnl CLIENT_OPTIONS(`Family=inet6, Address=::'
)dnl
dnl

И в конце файла (где закончились строки начинающиеся с dnl) добавил опцию ограничения максимального размера сообщения и максимального количества получателей:

dnl
dnl Max Message Size dnl
define(`confMAX_MESSAGE_SIZE', `8000000')
dnl Max Recipients per Message dnl
define(`confMAX_RCPTS_PER_MESSAGE', `15')
dnl Enforce valid Message-Id to help stop spammers.
dnl

Стоит заметить что размер указан в байтах, такчто реально 8000000 меньше чем 8M 🙂

Вот и все! Проще не придумаеш 🙂 Теперь этот конфиг нужно собрать. Для этого используется стандартная приблуда — make

Делается в этой же директории примерно так (указанием цели сборки служит имя файла конфигурации sendmail с разширением cf):

root@gw:/usr/share/sendmail/cf# make openbsd-proto.cf

В результате успешной работы этой команды у вас появится тут же готовый конфиг для sendmail с названием openbsd-proto.cf

Я переместил его в директорию /etc/mail и обозвал office.cf

root@gw:/usr/share/sendmail/cf# mv openbsd-proto.cf /etc/mail/office.cf

На этом настройку и сборку главного конфига Sendmail MTA считаю законченой для своей задачи 🙂

Теперь осталось разобраться с запуском sendmail. На самом деле розбираться тут особо нечего — просто запускаем из рутовой консоли командой:

root@gw:~ # sendmail -L sm-mta -C/etc/mail/office.cf -bd -q30m

И тоже самое добавляем в /etc/rc.conf.local для автоматического старта sendmail во время загрузки системы:

root@gw:~ # grep -i sendmail /etc/rc.conf.local

sendmail_flags="-L sm-mta -C/etc/mail/office.cf -bd -q30m"

Ну вот и автозапуск sendmail одолели!

Пробуем настроить любимый Mail-клиент на одном из компов внутрисети. Данные POP3/IMAP используем любого доступного/нужного mail-сервера, а вот в качестве SMTP-сервера прописываем свой 192.168.100.2. Принимать смог сразу, а вот с отправкой лажа — ошибка 550 (Relaying Denied!) 🙂 Эта ошибка вполне предсказуема. Нужно просто подправить файлик /etc/mail/access до такого вида:

root@gw:~# cat /etc/mail/access
# $OpenBSD: access,v 1.1 2003/09/23 21:37:11 millert Exp $
#
# sendmail(8) access database.  Rebuild by running as root:
#   makemap hash /etc/mail/access < /etc/mail/access
#
# See /usr/share/sendmail/README for a description of this file
# under the "access_db" feature.
#
192.168.100     RELAY
root@gw:~#

Тоесть просто добавляем в конец строчку 192.168.100     RELAY которая розрешает релейную передачу писем через наш сервер из сети 192.168.100.0/24

Обновить базу данных access можно и нужно командой:

root@gw:/etc/mail# makemap hash /etc/mail/access < /etc/mail/access

После этого необходимо передернуть сэндмыло:

root@gw:/etc/mail# kill -HUP `head -1 /var/run/sendmail.pid`

Теперь все что мы задумали — должно работать как надо. Сразу после запуска — не стесняемся! Тестим по полной программе! Про себя могу сказать — работает уже полгода без нареканий как с моей, так и со стороны пользователей 🙂

Всем удачи — и поменьше спама в MTA!!!

Outlook Express 6 — Код Ошибки: 0x800C0133

Было обычное спокойное утро понедельника… Но долго скучать не пришлось — у сотрудника «перестала работать почта» настроеная через Outlook Express 6. Симптомы наблюдались примерно такие:

При попытке получить новую почту …  Outlook Express весьма надолго задумывается, а потом вываливает ошибку с кодом 0x800C0133.

Стали розбираться. Сначала подумал что мало места на диске — не то! Места несколько гиг свободных. Попробовал просто закрыть/открыть прогу … еще по мелочам попробовал то-се — ничего не помогало. Пришлось всетаки спросить у google. На какомто англоязычном форуме нашлось решение. Оказывается у Outlook Express сносит голову после того как «Входящие» или другая директория начинает весить более 2-2.5GB.

Вобщем сходил в директорию где лежат базы сообщений (C:\Documents and Setting\$USER\Local Settings\Application Data\Identities\{SOME_ID}\Outlook Express) и убедился в том что база сообщений Входящие.dbx занимает 2.1GB.

Добавлено 14.09.2011 — Как показала практика борьбы с этой ошибкой, дальше возможно развитие событий по двум сценариям:

  1. Если вы уже неможете работать с сообщениями в самой программе Outlook Express (просматривать список сообщений в базе, читать письма, копировать, перемещать и тп) Тут я нашел только один метод вернуть читабельность сообщений — использование сторонней программы OE Mail Recovery. С ее помощью можно сохранить письма из нечитабильной базы DBX в отдельные eml, которые потом можно закинуть обратно в Outlook Express 6 но уже подробив по папкам для уменьшения размера базы.
  2. Если сообщения читаются (их можно просматривать, копировать, перемещать, удалять) несмотря на ошибку — читайте дальше.

Решение весьма банальное (такое, кстати, и на Seamonkey когдато делал):

  • создать несколько отдельных директорий и перенести туда часть сообщений из «Входящие». К примеру я создал директории используя в качестве названия год (2006, 2007, 2008, 2009)
  • Outlook Express 6 - Error 0x800C0133

  • переместил из «Входящие» сообщения данных годов по соответствующим папкам. Получилось что во «Входящие» осталась лиш малая часть сообщений за 2010 год. Их тоже решил забекапить, поэтому создал директорию Temp и все что осталось во входящие (читай сообщения за 2010 год) переместил туда. В итоге получили пустую папку «Входящие» и несколько директорий с архивом сообщений за соответсвующий названию папки год.
  • Закрыл Outlook Express. Удивлению моему небыло предела когда обнаружил что база сообщений «Входящие» (сам файлик Входящие.dbx) так и не похудала! Несмотря на то что я перенес с помощью самого Outlook Express одтуда все сообщения (читать выше) по совершенно отдельным папкам, она все также занимала 2.1 гига 🙂 Жесть короче.
  • Посколько все месаги у меня забекаплены (рознесены по другим папкам) решил грохнуть файл Входящие.dbx
  • Запустил Outlook Express 6 Он создал новый файл Входящие.dbx с копеечным размером.
  • Переместил из директории Temp все сообщения обратно во «Входящие» (их нетак уж много было — всегото 2010 год)

После этого новая почта чудно принялась и все какбы нормально заработало 🙂

P.S. Написал скорее для себя. Но может еще комуто пригодится 😉