LINUX.ORG.RU
ФорумAdmin

Перенос почтового сервера на новый домен

 , ,


0

1

Всем привет, прошу помощи и прошу камнями не закидывать. Необходимо переехать на новый домен, но, к сожалению, с почтой я никогда не работал (только немного с MS Exchange).

Что дано:

  • openLDAP
  • cyrus-imapd
  • postfix

Это 3 разные виртуальные машины. На всех установлен debian 7. Я хотел под шумок всё это перенести на centOS 7 и объединить imap и smtp на одном сервере.

openLDAP я установил, настроил и перенес базу на новый сервер с новым суффиксом. А вот с почтой возникли проблемы. Перечитал разные howto, маны и форумы, но картина как-то не складывается.

Первым делом я хотел бы настроить хранилище, чтобы перенести письма пользователей (с транспортом пока вообще нет представления как это делать). Как я это представлял:

  • Устанавливаю cyrus-imapd;
  • Правлю imapd.conf по аналогии со старым;
  • Копирую maildir со старого сервера на новый;
  • Ставлю какую-нибудь веб-морду (zimbra?);
  • Проверяю, что у ящики пользователей работают корректно;

Перечитав различные статьи в интернете я ещё больше запутался. Например для чего нужен /etc/saslauthd.conf?

Можно ли получить какую-нибудь краткую инструкцию по настройке cyrus-imapd + openldap?

Устанавливаю cyrus-imapd;

1. Какая старая версия, какая новая ?
2. Конфигурация с виртуальными доменами, или без ?
3. unixhierarchysep проверь тоже.

2 и 3 - просто для себя определись, от 2 зависит, как располагаются ящики, от 3 - является ли точка разделителем каталогов, или может использоваться в именах. Что касается 1, то при очень большом разбеге версий могут не подхватиться старые индексы, придётся удалять и перестраивать. Соответственно, послетают отметки о прочтении.

Копирую maildir со старого сервера на новый;

Сама информация о ящиках в /var/lib/imap/mailboxes.db

Может быть, если версии сильно различаются, либо конфигурация меняется с/без виртуальных доменов, придётся ящики пересоздать и копировать отдельно по ящику.

(zimbra?);

Это не веб-морда, это комбайн всё-в-одном. Веб-морда, например, Roundcube.

Например для чего нужен /etc/saslauthd.conf?

Для настройки saslauthd наверное ? Строго говоря, для Cyrus-IMAP он может быть и не нужен - это по ситуации. У меня используется либо sasldb, либо sasl-mysql. У последнего настройки прямо в imapd.conf. LDAP тоже может быть настроен прямо в imapd.conf, но я не использовал.

saslauthd я использую для Sendmail, чтобы авторизация работала у него через Cyrus-IMAP. Sendmail спрашивает у saslauthd, а он, в свою очередь, у imap-сервера через rimap.

Про Postfix vs Sendmail. У Cyrus-IMAP есть smmapd, Sendmail умеет спрашивать через него, есть ли ящик. Удобно отлуп делать на этапе приёма, чтобы боунсом сервер отправителя занимался, если что. Можно ли так у Postfx - не знаю. Хотя, наверное, его мимо Цируса к тому же LDAP можно прицепить.

AS ★★★★★
()

Можно ли получить какую-нибудь краткую инструкцию по настройке cyrus-imapd + openldap?

они не связаны :)

sasl и openldap связаны.

sasl и cyrus-imap связаны.

надобность /etc/saslauthd.conf в таком варианте под вопросом, т.к. sasl умеет ldap

SASL + LDAP (комментарий)

vel ★★★★★
()
Ответ на: комментарий от AS

1. Какая старая версия, какая новая ?

Старый сервер на debian:

root@imap:~# apt-cache policy cyrus-imapd
cyrus-imapd:
  Installed: 2.4.17+caldav~beta10-18
  Candidate: 2.4.17+nocaldav-0+deb8u2
  Version table:
     2.4.17+nocaldav-0+deb8u2 0
        500 http://mirror.mephi.ru/debian/ jessie/main amd64 Packages
 *** 2.4.17+caldav~beta10-18 0
        100 /var/lib/dpkg/status

На новом сервере centOS 7:

[root@imap01 certs]# yum info cyrus-imapd

Installed Packages
Name        : cyrus-imapd
Arch        : x86_64
Version     : 2.4.17
Release     : 13.el7
Size        : 57 M
Repo        : installed
From repo   : base
Summary     : A high-performance mail server with IMAP, POP3, NNTP and SIEVE support
URL         : http://www.cyrusimap.org/
License     : BSD

2. Конфигурация с виртуальными доменами, или без ?

Видимо с виртуальными:

root@imap:~# grep "virtdomains" /etc/imapd.conf
virtdomains: userid

3. unixhierarchysep проверь тоже.

root@imap:~# grep "unixhierarchysep" /etc/imapd.conf
unixhierarchysep: 1

Пользователи имею почту вида: name.surname@domain.com, а хранятся в такой виде:

root@imap:~# tree /var/spool/imap/domain/a/domain.com/a/ -L 2
/var/spool/imap/domain/a/domain.com/a/
└── user
    ├── name^sername

saslauthd я использую для Sendmail, чтобы авторизация работала у него через Cyrus-IMAP. Sendmail спрашивает у saslauthd, а он, в свою очередь, у imap-сервера через rimap.

То есть мне надо настроить ldap-аутентификацию на sendmail, а через него будет доступ до imap сервера? И если cyrus-imap всё равно использует sendmail, то postfix на тот же сервер видимо поставить не получится?

nspickiy
() автор топика
Ответ на: комментарий от nspickiy

virtdomains: userid

Странно. Вообще-то, у этого параметра два значения: on и off. Может быть, допустимо 1 и 0. А так даже и не знаю. ctl_mboxlist -d с доменом ящики показывает, или без ?

То есть мне надо настроить ldap-аутентификацию на sendmail, а через него будет доступ до imap сервера?

Не путай. Cyrus-IMAP сам по себе, MTA - сам по себе. MTA должен либо уметь LMTP, либо уметь использовать deliver от Cyrus-IMAP. Какой именно это будет MTA - не очень важно. И Postfix может быть, и Sendmail, и Exim, и что-то ещё, но только кто-то один на одном хосте. У MTA свои отдельные задачи и настройки, причём, если LMTP использовать, MTA можно и на отдельный сервер унести, и несколько MX-серверов для одного Cyrus-IMAP сделать. Если несколько, вот тут можно и разные MTA.

Основное - принять почту, если домен свой, и сложить как-нибудь в Cyrus (LMTP или deliver); желательно до приёма понять, а есть ли, куда складывать, или сказать отправителю 5xx сразу (smmapd, или как-то ещё).

Дополнительное - поработать релеем для несвоих доменов, но своих пользователей. Тут удобно не отдельно базу пользователей вести, а использовать ту же самую. Тут тоже есть варианты. saslauthd и rimap - это только один из них.

AS ★★★★★
()
Ответ на: комментарий от nspickiy

Installed: 2.4.17+caldav~beta10-18

caldav используется ? Если да, то ставить надо тоже с этим патчем, либо 2.5 сразу. Индексы от 2.4 подхватятся. Либо вообще 3.0, но тут не знаю, ещё не пробовал. CalDAV, кстати, тоже не использовал пока.

А, пока не забыл. Правила Sieve используют кто-нибудь ? Не забудь тоже. Они в том же каталоге, что и mailboxes.db.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 2)
Ответ на: комментарий от AS

Странно. Вообще-то, у этого параметра два значения: on и off. Может быть, допустимо 1 и 0. А так даже и не знаю. ctl_mboxlist -d с доменом ящики показывает, или без ?

root@imap:~# /usr/lib/cyrus/bin/ctl_mboxlist -d | grep name.sername
domain.com!user.name.sername    0 default name.sername@domain.com       lrswipkxtecda   cyrus-admin     lrswipkxtecda
domain.com!user.name.sername.Archive    0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Calendar   0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Calendar.Personal Calendar 0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Configuration      0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Contacts   0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Contacts.Personal Contacts 0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Deleted Messages   0 default name.sername@domain.com       lrswipkxtecda   cyrus-admin     lrswipkxtecda
domain.com!user.name.sername.Drafts     0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Files      0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Freebusy   0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Journal    0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Junk       0 default name.sername@domain.com       lrswipkxtecda   cyrus-admin     lrswipkxtecda
domain.com!user.name.sername.Notes      0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Sent       0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Sent Messages      0 default name.sername@domain.com       lrswipkxtecda   cyrus-admin     lrswipkxtecda
domain.com!user.name.sername.Spam       0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Tasks      0 default name.sername@domain.com       lrswipkxtecda
domain.com!user.name.sername.Trash      0 default name.sername@domain.com       lrswipkxtecda

Извините, но я всё равно не очень понимаю порядок действий:(

Я ставлю cyrus-imapd и что должно быть следующим шагом, чтобы подключить базу пользователей к openLDAP? Настроить imap.conf, так ведь?

После этого я так понимаю мне надо разобраться с аутентификацией sasl?

nspickiy
() автор топика
Ответ на: комментарий от nspickiy

Я ставлю cyrus-imapd и что должно быть следующим шагом, чтобы
подключить базу пользователей к openLDAP? Настроить imap.conf, так ведь?

На самом деле, раз версия не меняется, всё можно просто скопировать, и /var/lib/imap, и /var/spool/imap (хотя в Debian и Centos другое расположение этих каталогов может быть; у меня ALT). Учесть только, что исходная версия с CalDAV.

AS ★★★★★
()
Ответ на: комментарий от AS

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

nspickiy
() автор топика

Только я что-то про тему забыл. Речь именно про замену @domain.com на @domain2.com ? Если да, то ящики перезаводить, копировать содержимое каталога с доменом в каталог, соответствующий новому домену в то расположение, где он создастся. Раз конфигурация с виртуальными доменами, то расположение поменяется.

AS ★★★★★
()
Ответ на: комментарий от AS

Домен сменить да, но я хотел бы ещё новую инсталяцию сделать. Но не могу понять какой порядок действий. Всё что я находил в интернете на тему cyrus-imapd + openldap + postfix не очень хорошо описывает это всё. Вот и попросил помощи, вкратце объяснить, что за чем настраивается

nspickiy
() автор топика
Ответ на: комментарий от nspickiy

Так у меня домены разные

Это я упустил, но написал уже, что делать.

Но я хотел бы разобраться с вопросами о почте

С Cyrus-IMAP надо понять такую штуку. Ящики у него сами по себе и от механизма авторизации никак не зависят. То есть, если ящик заведён, почта уже будет доставлятся. Авторизация нужна для доступа к ящику по pop/imap. То есть, заведение пользователя состоит из двух этапов: завести ящик у Cyrus-IMAP, завести пользователя в базе авторизации. Имя пользователя равно названию ящика. Если речь про вариант с доменами, то это целиком E-Mail. Соответственно, поставить Cyrus-IMAP и настройить на работу с ним MTA можно до возни со способом авторизации. Когда это заработает, можно приступать к OpenLDAP, либо тому, что выбрано вместо.

AS ★★★★★
()
Ответ на: комментарий от nspickiy

openldap

А это, кстати, зачем ? Много пользователей с разными сервисами ? А то, может быть, это из пушки по воробьям ? На десяток-другой только почтовых пользователей, может быть, и sasldb достаточно. С ней же можно и отладиться по началу, кстати, а уже потом на LDAP переходить, когда будет понятно, что остальное всё работает.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от AS

Более 100 различных сервисов завязано на openLDAP. Как минимум ключи ssh хранятся в LDAP и на все сервера авторизация через него идет, а это около 300, да и пользователей почти 350 человек.

nspickiy
() автор топика
Ответ на: комментарий от AS

С Cyrus-IMAP надо понять такую штуку. Ящики у него сами по себе и от механизма авторизации никак не зависят. То есть, если ящик заведён, почта уже будет доставлятся. Авторизация нужна для доступа к ящику по pop/imap. То есть, заведение пользователя состоит из двух этапов: завести ящик у Cyrus-IMAP, завести пользователя в базе авторизации. Имя пользователя равно названию ящика. Если речь про вариант с доменами, то это целиком E-Mail. Соответственно, поставить Cyrus-IMAP и настройить на работу с ним MTA можно до возни со способом авторизации. Когда это заработает, можно приступать к OpenLDAP, либо тому, что выбрано вместо.

В принципе я понял, буду сначала пытаться подружить cyrus-imapd и openldap, чтобы он ящики создавал по пользователям из openldap

nspickiy
() автор топика
Ответ на: комментарий от nspickiy

буду сначала пытаться подружить cyrus-imapd и openldap,
чтобы он ящики создавал по пользователям из openldap

Cyrus-IMAP так не умеет. Либо надо режим автосоздания ящиков включать (но это чревато тем, что левые насоздадутся), либо писать какие-то скрипты, которые смотрят в LDAP, сравнивают и дозаводят. Или добавить в тот, который в LDAP пользователей заводит.

AS ★★★★★
()
Ответ на: комментарий от AS

Хм..в принципе все пользователи у меня находятся в конкретной OU, но вообще созданием пользователей занимался наш портал (самописный). Но ведь я же не могу скопировать /var/lib/imap/mailboxes.db ведь ящики различаются?

nspickiy
() автор топика
Ответ на: комментарий от nspickiy

Но ведь я же не могу скопировать /var/lib/imap/mailboxes.db ведь ящики различаются?

Да, раз там присутствует информация о домене, то просто так скопировать нельзя. Ящики с новым доменом надо заново создать.

AS ★★★★★
()
Ответ на: комментарий от AS

На python+django насколько мне известно. Это корпоративный портал

nspickiy
() автор топика

1. не надо перетаскивать ящики руками. А так же неудобно хранить письма в одном файле. Перетаскивать надо с помощью imapsync. Ставишь второй почтовик, создаешь там пользователей и просто по imap синхронизируешь два почтовика. Тогда ты не привязан к убогому cyrus, который должен сдохнуть медленной и желательно мучительной смертью. Дело конечно твое, но эта миграция УНИВЕРСАЛЬНА, тебя не парит, как и что ты сделал на новом сервере.ё

2. Не надо cyrus, пожалуйста. Сделай dovecot в качестве MDA.

3. Поскольку ты ничего не соображаешь в почтовиках, то позьми пакет iredmail и он поднимет тебе почту за 5 минут. И это будет нормальная связка postfix+dovecot+ (ldap или mysql)+ веб морды+ спамы и все-все-все, но при этом там будет все просто править под себя.

4. Не ставь зимбру, если только ты не ява"люб". Это черный ящик на яве со всеми вытекающими последствиями.

constin ★★★★
()
Последнее исправление: constin (всего исправлений: 1)
Ответ на: комментарий от constin

К сожалению корпоративный портал завязан на cyrus и перейти на dovecot не получится :(

Комбайн не хочется использовать в силу того, что есть возможность и желание научиться. Понятно что косяки будут, но это дело поправимое

nspickiy
() автор топика
Ответ на: комментарий от nspickiy

а не надо его передопачивать, надо поменять поменять коннектор на свой ldap

constin ★★★★
()
Последнее исправление: constin (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.