exim+dovecot: разные папки при получении и доставке

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
UST
проходил мимо

exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение UST » 2009-09-03 14:08:08

Настраиваю связку exim+dovecot c авторизацией и получением юзерских ящиков через win2003 active directory. Работает, однако новопришедшая почта кладется в /var/mail/exim/usermailbox@domain.com, а забирается аутлуком по имапу из /var/mail/exim/username. В результате, почту пользователь не получает. Где грабли? Конфиг dovecot такой:

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

base_dir = /var/run/dovecot
protocols = imap
listen = *
disable_plaintext_auth = no
shutdown_clients = yes
ssl = no
mail_location = maildir:/var/mail/exim/%Lu
mail_privileged_group = mail
verbose_proctitle = yes
first_valid_uid = 26
last_valid_uid = 26
first_valid_gid = 26
last_valid_gid = 26
maildir_copy_with_hardlinks = yes
login_greeting = dovecot MUA ready

protocol imap {
  imap_client_workarounds = delay-newmail outlook-idle tb-extra-mailbox-sep
}

protocol lda {
  postmaster_address = postmaster@domain.com
  sendmail_path = /usr/sbin/sendmail
  auth_socket_path = /var/run/dovecot/auth-master
#  log_path = /var/log/dovecot/deliver.log
#  info_log_path = /var/log/dovecot/deliver.log
}

auth_cache_size = 1024
auth_username_format = %Lu

auth default {
  mechanisms = plain

  passdb pam {
    args = exim
  }

  userdb static {
    args = uid=26 gid=26 home=/var/mail/exim/%Lu allow_all_users=yes
  }
  user = root

  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0600
      # Default user/group is the one who started dovecot-auth (root)
      user = mailnull
      #group = mail
    }
  }
}


Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

barsykoff
мл. сержант
Сообщения: 132
Зарегистрирован: 2007-07-26 10:36:59
Контактная информация:

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение barsykoff » 2009-09-03 17:10:37

Ну если постфикадмин стоит в качестве админки, то грабли, скорее всего там. А чем почта раскладывается по папкам?

Гость
проходил мимо

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение Гость » 2009-09-04 8:09:59

Довкотом и раскладывается. Транспорт экзима такой:

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

dovecot_delivery:
  driver = pipe
  command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain
  # $authenticated_id
  # $local_part@$domain
  message_prefix =
  message_suffix =
  delivery_date_add
  envelope_to_add
  return_path_add
  log_output
  user = mailnull
Вообще, суть проблемы ясна - в опцию mail_location конфига довкота нужно вписать что-то, соответствующее ящику. Но что?

barsykoff
мл. сержант
Сообщения: 132
Зарегистрирован: 2007-07-26 10:36:59
Контактная информация:

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение barsykoff » 2009-09-04 9:23:04

Меня на самом деле смущает буква L в данной строчке:

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

mail_location = maildir:/var/mail/exim/%Lu
Что-то в документации я не нашел подобного.. А вообще есть несколько опций, выберите, какая вам больше подходит

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

# Некоторые переменные:
#
#   %u - имя пользователя (будет вида user@domain.ru)
#   %n - локальная часть в адресе (будет вида user)
#   %d - доменная часть в адресе (будет вида domain.ru)
#   %h - домашняя директория
#
# Такой путь записан в конфиге postfixadmin (будет вида /var/mail/exim/domain.ru/user)
mail_location = maildir:/var/mail/exim/%d/%n

UST
проходил мимо

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение UST » 2009-09-07 9:14:58

Буква L означает, что все что после нее будет приведено к нижнему регистру. В том-то и дело, что имена пользователей НЕ совпадают с названиями ящиков, в документации довкота для таких случаев ничего нет.

barsykoff
мл. сержант
Сообщения: 132
Зарегистрирован: 2007-07-26 10:36:59
Контактная информация:

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение barsykoff » 2009-09-07 10:23:06

http://www.lissyara.su/?id=1455 - не Ваш ли случай?
Однако, вот dovecot не умеет работать с saslauthd - аффтар посчитал, что вполне хватит встроенного sasl`a... Вот с этого момента начались пляски с бубном - напрямую в AD dovecot лазить умеет, умеет даже авторизоваться от имени пользователя, однако, у меня не заработало - искался пользователь vasya@my-domain.local а ldap, врезультате поиска возвращал просто vasya - что ему и не нравилось... Указание просто васи - приводило к "инвалид крединтиалс".

UST
проходил мимо

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение UST » 2009-09-07 12:00:13

Я по этой статье и настраивал, но того что нужно там нет - довкот авторизуется нормально. Но кладет пришедшую почту он в папку вида mailbox@domain.com, а отдает из папки username - в этом вся проблема.

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение CrazyPilot » 2009-09-07 13:05:58

Эм, не знаю, подойдет ли вам это, с учетом постфикс админки. Но у себя я сделал так:

Транспорт в exim:

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

dovecot_delivery:
        driver                  = pipe
        command             =/usr/local/libexec/dovecot/deliver -d "${lookup ldap{user=CN=ldap%20ldap,CN=Users,DC=example,DC=com pass=12345678 ldap:///dc=example,dc=com?sAMAccountName?sub?(&(mail=${quote_ldap:$local_part@$domain}))}{$value}}"
        user                    = mailnull
        group                   = mail
        delivery_date_add       = true
        envelope_to_add         = true
        return_path_add         = true
В итоге dovecot получает sAMAccountName в качестве имени пользователя. Ищет его в Active Directory, откуда получает

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

---------------
dovecot.conf
---------------
....
mail_location = maildir:~
....
---------------
dovecot-ldap.conf
---------------
.....
user_attrs=mail=home=/var/mail/%$
.....
user_attrs как раз присоединяет значение свойства mail найденного юзера в AD к /var/mail/.
Как-то так. Хоть и выглядит как масло масляное, но работает без нареканий. Хотя может потому что пользаков мало, около 200...
Вся почта на массиве у меня хранится именно в виде /var/mail/someuser@example.com. Вместо аутглюка у меня thunderbird...может в этом все дело...

P.S. Не пойму как у вас на AD все завязано, если user-db static. Или оно тупо всех пускает, а passdb через pam? Имхо, как-то не так сделано, а если я захочу юзеру мыло какое-нить особенное прописать? Типа извините, selavi?

UST
проходил мимо

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение UST » 2009-09-07 14:01:27

---------------
dovecot-ldap.conf
---------------
.....
user_attrs=mail=home=/var/mail/%$
Вот это как раз не работает. Вообще, весь dovecot-ldap.conf в дефолтном виде, похоже, довкот вообще его не смотрит. Такое может быть?

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение CrazyPilot » 2009-09-07 15:20:58

UST писал(а):
Вообще, весь dovecot-ldap.conf в дефолтном виде, похоже, довкот вообще его не смотрит. Такое может быть?
Конечно может. Довекот у вас, как, стелепатировать должен, где ему что искать? :-) (Судя по приведенному выше конфигу)

Должно быть нечто такое:

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

[root@flanker ~]# vim /usr/local/etc/dovecot.conf
.......
userdb ldap {
                args = /usr/local/etc/dovecot-ldap.conf
        }
........

UST
проходил мимо

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение UST » 2009-09-07 15:42:56

Блин, запутался. Ничего не работает. Можно полные конфиги довкота?

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение CrazyPilot » 2009-09-07 15:54:38

Хм, да пожалста :-)
dovecot.conf

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

protocols = imap
listen = *
disable_plaintext_auth = no
ssl_disable = yes
mail_location = maildir:~
mail_access_groups = mail
verbose_proctitle = yes
first_valid_uid = 26
last_valid_uid = 26
maildir_copy_with_hardlinks = yes
log_path = /var/log/dovecot.log
auth_cache_size = 0
auth_username_format = %Lu
mail_uid = 26
mail_gid = 6
# Logging
#mail_debug=yes
#auth_debug=yes
protocol imap {
	imap_client_workarounds = delay-newmail outlook-idle tb-extra-mailbox-sep
	#mail_plugins = quota imap_quota
}
protocol lda {
	postmaster_address = postmaster@example.com
	sendmail_path = /usr/sbin/sendmail
	auth_socket_path = /var/run/dovecot/auth-master
	#mail_plugins = quota
}

plugin {
	#quota = maildir:User max. mailbox size
	#quota_rule = *:storage=3G
	#quota_rule2 = Trash:storage=500M
	#quota_rule3 = SPAM:ignore
}

auth default {
	mechanisms = plain
	

	#  Uncomment this to auth users in Active Directory
	passdb ldap {
	    args = /usr/local/etc/dovecot-ldap.conf
	}

	# Commnet this passdb when users auth in Active Directory
#	passdb passwd-file {
#		args = /tmp/passwd_dovecot
#	}
	userdb ldap {
		args = /usr/local/etc/dovecot-ldap.conf
	}
	# This is for Xerox senders
	userdb passwd-file {
		args = /usr/local/etc/dovecot_senders.db
	}
	passdb passwd-file {
		args = scheme=PLAIN /usr/local/etc/dovecot_senders.db
	}
	socket listen {
		master {
			path = /var/run/dovecot/auth-master
			mode = 0600
			# Default user/group is the one who started dovecot-auth (root)
			user = mailnull
			group = mail
		}
		client {
			path = /var/run/dovecot/auth-client
			mode = 0666
			user = mailnull
			group = mail
		}
	}
}
dovecot-ldap.conf

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

hosts = boss2.example.ru:3268 boss1.example.ru:3268
# Distinguished Name - the username used to login to the LDAP server
dn = CN=ldap ldap,CN=Users,DC=example,DC=ru
# Password for LDAP server
dnpass = 12345678
# LDAP library debug level as specified by LDAP_DEBUG_* in ldap_log.h. -1 = everything. 
#debug_level = -1
# Use authentication binding for verifying password's validity.
auth_bind = yes
# LDAP protocol version to use. Likely 2 or 3.
ldap_version = 3
# LDAP base. %variables can be used here.
base = dc=example, dc=ru
# Dereference: never, searching, finding, always
deref = searching
# Search scope: base, onelevel, subtree
scope = subtree
# There are also other special fields which can be returned, see
# http://wiki.dovecot.org/UserDatabase/ExtraFields
#user_attrs = mail = mail =maildir:/var/mail/%$,=home=/var/mail/
user_attrs=mail=home=/var/mail/%$ #,postalCode=quota_rule=*:storage=%$M
# Filter for user lookup. Some variables can be used (see
# http://wiki.dovecot.org/Variables for full list):
#   %u - username
#   %n - user part in user@domain, same as %u if there's no domain
#   %d - domain part in user@domain, empty if user there's no domain
user_filter = (&(objectClass=user)(!(objectClass=computer))(sAMAccountName=%u))
# Filter for password lookups
pass_filter = (&(objectClass=user)(!(objectClass=computer))(sAMAccountName=%u))

UST
проходил мимо

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение UST » 2009-09-08 11:38:43

Cпасибо! Заработало. Последний штрих: как сделать, чтобы при первом логине юзера папка его почты создавалась автоматически? Сейчас в логах такое:

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

Sep  8 12:36:04 spb-router dovecot: IMAP(username): file_dotlock_open() failed with file /var/mail/exim/userbox@domain.ru/dovecot.index.log: No such file or directory

UST
проходил мимо

Re: exim+dovecot: разные папки при получении и доставке

Непрочитанное сообщение UST » 2009-09-08 11:39:51

Хм, перезапустил аутлук, все создалось. Вопрос снят. Еще раз спасибо.