Настройка Dovecot

Автор somalic, 22 февраля 2013, 22:21:36

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

somalic

Подскажите пожалуйста в чем проблема?

Конфиг dovecot:

protocols = imap imaps pop3 pop3s
listen = *
disable_plaintext_auth = no
log_timestamp = "%Y-%m-%d %H:%M:%S "
login_greeting = Dovecot ready.
mail_location = maildir:/var/mail/%u
mail_privileged_group = mail
maildir_copy_with_hardlinks = yes
protocol imap {
}

protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}
protocol managesieve {
  sieve=~/.dovecot.sieve
  sieve_storage=~/sieve
}
auth_verbose = no
auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }
  user = root
}
dict {
}
plugin {
}


Результат применения конфига:

root@Server:/etc/dovecot# /etc/init.d/dovecot restart
doveconf: Warning: NOTE: You can get a new clean config file with: doveconf -n > dovecot-new.conf
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:1: 'imaps' protocol is no longer necessary, remove it
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:1: 'pop3s' protocol is no longer necessary, remove it
doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 13: Expecting '='
doveconf: Error: managesieve-login: dump-capability process returned 89
doveconf: Warning: NOTE: You can get a new clean config file with: doveconf -n > dovecot-new.conf
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:1: 'imaps' protocol is no longer necessary, remove it
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:1: 'pop3s' protocol is no longer necessary, remove it
doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 13: Expecting '='
Restarting IMAP/POP3 mail server: dovecotdoveconf: Warning: NOTE: You can get a new clean config file with: doveconf -n > dovecot-new.conf
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:1: 'imaps' protocol is no longer necessary, remove it
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:1: 'pop3s' protocol is no longer necessary, remove it
doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 13: Expecting '='
doveconf: Error: managesieve-login: dump-capability process returned 89
doveconf: Warning: NOTE: You can get a new clean config file with: doveconf -n > dovecot-new.conf
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:1: 'imaps' protocol is no longer necessary, remove it
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:1: 'pop3s' protocol is no longer necessary, remove it
doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 13: Expecting '='
failed!

Gordon

#1
Может поможит :Введение
рецепт

Dovecot выполняет роль POP/IMAP почтового сервера. Фактически, он выполняет две функции:
(основная) получает почту от MTA (Sendmail, Postfix и др.) и хранит ее на диске;
(в моем случае) осуществляет авторизацию логина/пароля почтовых пользователей.

В данном руководстве пойдет речь о настройке Dovecot версии 2 как части классической связки "Dovecot + Postfix + MySQL + PostfixAdmin". Возможно, в дальнейшем я оформлю это одним документом, но сейчас много лирических отступлений в виде описания проблем настройки, значения опций конфигурационных файлов и др. сделали бы этот объединенный документ неудобным для чтения.

Напомним пройденные и будущие этапы:
MySQL - нам надо сразу сделать хранилище настроек, т.к. и Postfix и Dovecot будут "завязаны" на базу данных.
PostfixAdmin - аналогично, сразу создаем инструмент управления базой данных, проверяем, что пользователи добавляются и пр.
Postfix - только на этом этапе ставим MTA (Mail Transfer Agent) Postfix.
Dovecot - финал - хранение почты, авторизация и пр.
Только после этого можно думать про антивирусы, веб-интерфейсы типа Roundcube Mail.
Установка Dovecot

Я уже давно для себя выбрал CentOS как основу для серверов. Поэтому все команды установки софта будут именно для этой операционной системы. Я крайне не советую ставить основные программы из исходников командами типа make, make install и т.д. Это приведет только к невозможности получения обновлений в удобной форме.

В процессе отладки я наступал на разные грабли, список которых выделил в отдельную страницу "размышления по ходу отладки". Не поленитесь, посмотрите, вдруг что-то пригодится.

yum install dovecot
yum install dovecot-mysql
chkconfig dovecot on

Вот и все, дальше надо настраивать конфиг.
Главный конфигурационный файл Dovecot

Основные настройки Dovecot хранит в файле конфигурации /etc/dovecot/dovecot.conf (или, реже /etc/dovecot.conf).

Сразу делаем копию конфигурационного файла:

cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak

Примечение: путь к файлу может быть /etc/dovecot.conf, проверьте сначала, где у вас в системе этот файл.

Рабочий конфигурационный файл Dovecot 2.0.beta6:
# Мы не используем специализированные файлы из поставки Dovecot из папки /etc/dovecot/conf.d/.
# Основная причина: отсутствие ясного руководства по их использованию. А также сравнительно небольшой
# размер всего конфига (все перед глазами, нет необходимости раскидывать по отдельным файлам).
#!include conf.d/*.conf

# Нет необходимости явно указывать imaps и pop3s - Dovecot 2.* по-умолчанию их включает.
protocols = imap pop3
listen = *
# Завершать все дочерние процессы, если завершен мастер-процесс
shutdown_clients = yes
# Владелец почтовых папок (также см. конфиг Postfix):
mail_uid = vmail
mail_gid = vmail

# Только наш пользователь с uid и gid 5000 (vmail) может быть использован.
first_valid_uid = 5000
last_valid_uid = 5000

# Лог-файлы. Подробнее: http://wiki2.dovecot.org/Logging
log_path = /var/log/dovecot.log
# Отладка. Если все настроено, отключаем (no)
# http://maint.unona.ru/doc/dovecot2.shtml
mail_debug = no
auth_verbose = no
auth_debug = no
auth_debug_passwords = no

# SSL
# http://wiki2.dovecot.org/SSL/DovecotConfiguration
ssl = yes
ssl_cert = </etc/pki/dovecot/certs/server.crt
ssl_key = </etc/pki/dovecot/private/server.key

# Запрет аутентификации открытым текстом. yes - запретить, no - разрешить.
disable_plaintext_auth = yes

# Расположение и формат файлов почты (%d - домен, %n - имя пользователя).
mail_location = maildir:/var/vmail/%d/%n

# Если при аутентификации не указан домен, то добавить этот (в данном примере - пустой)
auth_default_realm =

# Доступные варианты аутентификации. Для того, чтобы иметь меньше головной боли ставьте PLAIN
auth_mechanisms = PLAIN

# Одно из самых важных мест - предоставление сокетов для аутентификации пользователей.
# Если настроено неверно - ничего работать не будет!
service auth {
    # http://maint.unona.ru/doc/dovecot2.shtml
    # Указывает, что данный сокет будет использовать SMTP сервер для аутентификации.
    # Указывается пользователь, группа и права доступа к сокету. В данном случае это postfix
    # ("mail_owner = postfix" в файле /etc/postfix/main.cf).
    unix_listener /var/spool/postfix/private/auth {
        user = postfix
        group = postfix
        mode = 0660
    }
    unix_listener auth-master {
        user = vmail
        group = vmail
        mode = 0660
    }
    unix_listener auth-userdb {
        user = vmail
        group = vmail
        mode = 0660
    }
}

# Запрос параметров виртуальных почтовых пользователей
# (логин, пароль, домен, активный/неактивный и др.)
userdb {
    args = /etc/dovecot/dovecot-mysql.conf
    driver = sql
}
passdb {
    args = /etc/dovecot/dovecot-mysql.conf
    driver = sql
}

# Plugins

protocol imap {
    imap_client_workarounds = tb-extra-mailbox-sep
    mail_plugins = autocreate
}
protocol pop3 {
    pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
    pop3_uidl_format = %08Xu%08Xv
}

plugin {
    auth_socket_path = /var/run/dovecot/auth-master

    # Plugin: autocreate. Создаем и подписываемся на папки IMAP.
    autocreate = INBOX
    autocreate2 = Sent
    autocreate3 = Trash
    autocreate4 = Drafts
    autocreate5 = Junk
    autosubscribe = INBOX
    autosubscribe2 = Sent
    autosubscribe3 = Trash
    autosubscribe4 = Drafts
    autosubscribe5 = Junk

    # Plugin: квоты. Пока отключим.
    # http://wiki2.dovecot.org/Quota/Configuration
    #quota = maildir:User quota
    #quota_rule = *:storage=1GB
    #quota_rule2 = Trash:storage=+10%% # 10% of 1GB = 100MB
    #quota_rule3 = Junk:storage=+10%% # 10% of 1GB = 100MB
    #quota_rule4 = Drafts:storage=+10%% # 10% of 1GB = 100MB
}
Комментарии к конфигурационному файлу
На уже настроенной конфигурации я целый день не мог понять, почему отправленные письма (причем авторизация прошла успешно) не приходят в почтовый ящик. Оказалось, все дело в том, что в правах доступа на лог-файл /var/log/dovecot.log стоял root, а должно было быть vmail.

Postfix при отправке ДОЛЖЕН иметь возможность ЗАПИСИ в этот лог-файл. Postfix осуществляет авторизацию средствами Dovecot от имени непривилегированной учетной записи vmail.

В секции SSL указаны пути к сертификатам:

ssl = yes
ssl_cert = </etc/pki/dovecot/certs/server.crt
ssl_key = </etc/pki/dovecot/private/server.key

Проверте пути к файлам, по-умолчанию это вполне может быть, например, так:

ssl = yes
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

Права на эти файлы д.б. только для root.
Соединение Dovecot с MySQL

Для проверки валидности почтового адресата с помощью базы данных MySQL, Dovecot использует файл "/etc/dovecot/dovecot-mysql.conf". Если его нет, создаем его:

touch /etc/dovecot/dovecot-mysql.conf

В этот файл помещаем следующий текст:
driver = mysql
connect = host=localhost dbname=mail user=postfix password=My_PassworD
default_pass_scheme = PLAIN

password_query = SELECT username AS user,domain,password FROM mailbox WHERE username = '%u' AND active='1'

user_query = SELECT username AS user, '5000' AS uid, '5000' AS gid FROM mailbox WHERE username = '%n' AND domain = '%d' AND active='1'

Здесь %n - имя пользователя, %d - домен пользователя.

Еще раз обращаю внимание на то, что пароли скорее всего придется хранить в открытом виде (PLAIN). Это из-за того, чтобы иметь максимально гибкую систему. Например, изначально я все настроил на MD5, все было здорово, потом попробовал "прикрутить" веб-клиент почты RoundCube, и столкнулся с тем, что RoundCube не понимает именно такой-то вид шифрования. На общую безопасность это не должно влиять, т.к. все компоненты нашего почтового сервера находятся на одном физическом сервере, а клиентов всегда можно подключить через SSL/TLS.

Самое время проверить работу сервера и поставить веб-морду для пользователей почты Roundcube.
[свернуть]

qupl: Постарайтесь приводить свои советы в более читаемом виде. Иногда достаточно ссылки на сторонний ресурс.
Чо уставились ?