Поднял на сервере Openldap. Связвл его со всеми необходимыми сервисами. Теперь необходимо прикрутирть авторизацию к Courier-Imap/ В принципе он видит всё что ему необходимо:
Mar 26 12:20:42 route pop3d: chdir Maildir: No such file or directory
Mar 26 12:20:42 route authdaemond: Authenticated: sysusername=<null>, sysuserid=1002, sysgroupid=513, homedir=/home/testus, address=testus@bsd.home, fullname=testus, maildir=<null>, quota=<null>, options=<null>
Mar 26 12:20:42 route authdaemond: Authenticated: clearpasswd=test, passwd={CRYPT}IB4./y1UBLbvAКак видно не определён maildir.
Коннекчусь к openldap, пытаюсь создать запись типа mail - получилось. Запись maildrop - не идёт. её просто нет в списке доступных. Тогда пытаюсь при помощи ldapadmin создать такой тип записи. При указании в поле maildrop любого параметра выдаётся ошибка:
LDAP Error! Синтаксическая ошибка objectClass: value #0 invalid per syntax.Содержимое slapd.conf:
include /usr/local/etc/openldap/schema/corba.schema
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/duaconf.schema
include /usr/local/etc/openldap/schema/dyngroup.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/java.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/pmi.schema
include /usr/local/etc/openldap/schema/ppolicy.schema
include /usr/local/etc/openldap/schema/samba.schema
include /usr/local/etc/openldap/schema/rfc2739.schema
include /usr/local/etc/openldap/schema/horde.schema
include /usr/local/etc/openldap/schema/authldap.schemapidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.argsmodulepath /usr/local/libexec/openldap
moduleload back_bdbdatabase bdb
suffix "dc=bsd,dc=home"
rootdn "cn=Manager,dc=bsd,dc=home"
rootpw password
directory /var/db/openldap-data
index objectClass,uidNumber,gidNumber eq
index cn,mail,surname,maildrop eq,subinitial
index uid,displayName pres,sub,eq
index memberUid,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq
access to attrs=userPassword,sambaLMPassword,sambaNTPassword,sambaPwdLastSet,sambaPwdMustChange
by dn="cn=Manager,dc=bsd,dc=home" write
by self write
by anonymous auth
by * none
access to attrs=objectClass,entry,homeDirectory,uid,uidNumber,gidNumber,memberUid
by dn="cn=Manager,dc=bsd,dc=home" write
by * read
access to attrs=description,telephoneNumber,roomNumber,homePhone,loginShell,gecos,cn,sn,givenname
by dn="cn=Manager,dc=bsd,dc=home" write
by self write
by * read
access to attrs=cn,sambaLMPassword,sambaNTPassword,sambaPwdLastSet,sambaLogonTime,sambaLogoffTime,
sambaKickoffTime,sambaPwdCanChange,sambaPwdMustChange,sambaAcctFlags,displayName,
sambaHomePath,sambaHomeDrive,sambaLogonScript,sambaProfilePath,description,
sambaUserWorkstations,sambaPrimaryGroupSID,sambaDomainName,sambaMungedDial,
sambaBadPasswordCount,sambaBadPasswordTime,sambaPasswordHistory,
sambaLogonHours,sambaSID,sambaSIDList,sambaTrustFlags,sambaGroupType,sambaNextRid,
sambaNextGroupRid,sambaNextUserRid,sambaAlgorithmicRidBase,sambaShareName,
sambaOptionName,sambaBoolOption,sambaIntegerOption,sambaStringOption,
sambaStringListoption
by dn="cn=Manager,dc=bsd,dc=home" write
by self read
by * none
access to dn.base="dc=bsd,dc=home"
by dn="cn=Manager,dc=bsd,dc=home" write
by * none
access to dn="ou=Users,dc=bsd,dc=home"
by dn="cn=Manager,dc=bsd,dc=home" write
by * none
access to dn="ou=Groups,dc=bsd,dc=home"
by dn="cn=Manager,dc=bsd,dc=home" write
by * none
access to dn="ou=Computers,dc=bsd,dc=home"
by dn="cn=Manager,dc=bsd,dc=home" write
by * none
access to attrs=@hordePerson
by self write
by * noneaccess to dn.children="ou=DSA,dc=bsd,dc=home"
attrs=userPassword
by self write
by anonymous auth
by * noneaccess to dn.children="ou=DSA,dc=bsd,dc=home"
by self read
by * noneaccess to dn.children="ou=horde,dc=bsd,dc=home"
attrs=userPassword
by dn="cn=horde,ou=DSA,dc=bsd,dc=home" write
by self write
by anonymous auth
by * noneaccess to dn="ou=horde,dc=bsd,dc=home"
by dn="cn=horde,ou=DSA,dc=bsd,dc=home" write
by self read
by * none
access to *
by self read
by * readКусок содержимого базы, на пользователя testus:
dn: uid=testus,ou=Users,dc=bsd,dc=home
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: sambaSamAccount
cn: testus
sn: testus
givenName: testus
uid: testus
uidNumber: 1002
gidNumber: 513
homeDirectory: /home/testus
loginShell: /bin/tcsh
gecos: System User
userPassword: {CRYPT}IB4./y1UBLbvA
shadowLastChange: 14693
shadowMax: 45
mail: testus@bsd.home
sambaKickoffTime: 2147483647
sambaAcctFlags: [U]
sambaSID: S-1-5-21-2664805045-1336736238-230010449-3004
sambaPwdMustChange: 0
sambaDomainName: BSD
sambaPrimaryGroupSID: S-1-5-21-2664805045-1336736238-230010449-513Есть какие идеи как загнать maildrop и пр. переменные пользователю? или ткните в хороший мануал
Подключи qmail.schema
>Подключи qmail.schemaВ разных доках я встречал упоминание про qmail.schema, но у меня его нет :(. Зато к Courier-authlib шла authldap.schema, которую я пернёс ко всем остальным и подключил.
include /usr/local/etc/openldap/schema/authldap.schema
Я смотрел листинг схемы она там есть.
root@route /usr/home/skif/:less /usr/local/etc/openldap/schema/authldap.schema | grep mail | grep ^attribute
attributetype ( 1.3.6.1.4.1.10018.1.1.1 NAME 'mailbox'
attributetype ( 1.3.6.1.4.1.10018.1.1.4 NAME 'maildrop'
attributetype ( 1.3.6.1.4.1.10018.1.1.5 NAME 'mailsource'
attributetype ( 1.3.6.1.4.1.10018.1.1.11 NAME 'disablewebmail'
root@route /usr/home/skif/:
Может подскажете где качнуть?Кстати, иллюстрацию лога хотел показать, сразу не вставил:
Mar 26 13:48:31 route slapd[7820]: conn=1022 fd=17 ACCEPT from IP=192.168.1.5:4144 (IP=0.0.0.0:389)
Mar 26 13:48:31 route slapd[7820]: conn=1022 op=0 BIND dn="cn=Manager,dc=bsd,dc=home" method=128
Mar 26 13:48:31 route slapd[7820]: conn=1022 op=0 BIND dn="cn=Manager,dc=bsd,dc=home" mech=SIMPLE ssf=0
Mar 26 13:48:31 route slapd[7820]: conn=1022 op=0 RESULT tag=97 err=0 text=
Mar 26 13:48:31 route slapd[7820]: conn=1022 op=1 SRCH base="uid=testus,ou=Users,dc=bsd,dc=home" scope=0 deref=0 filter="(objectClass=*)"
Mar 26 13:48:31 route slapd[7820]: conn=1022 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Mar 26 13:48:32 route slapd[7820]: conn=1022 op=2 SRCH base="uid=testus,ou=Users,dc=bsd,dc=home" scope=0 deref=0 filter="(objectClass=*)"
Mar 26 13:48:32 route slapd[7820]: conn=1022 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=
Mar 26 13:48:32 route slapd[7820]: conn=1022 op=3 SRCH base="dc=bsd,dc=home" scope=2 deref=0 filter="(objectClass=sambaDomain)"
Mar 26 13:48:32 route slapd[7820]: conn=1022 op=3 SRCH attr=sambaDomainName sambaAlgorithmicRIDBase sambaSID
Mar 26 13:48:32 route slapd[7820]: conn=1022 op=3 SEARCH RESULT tag=101 err=0 nentries=1 text=
Mar 26 13:48:39 route slapd[7820]: conn=1022 op=4 MOD dn="uid=testus,ou=Users,dc=bsd,dc=home"
Mar 26 13:48:39 route slapd[7820]: conn=1022 op=4 MOD attr=objectClass maildrop
Mar 26 13:48:39 route slapd[7820]: conn=1022 op=4 RESULT tag=103 err=21 text=objectClass: value #0 invalid per syntax
>Как видно не определён maildir.
>
>Коннекчусь к openldap, пытаюсь создать запись типа mail - получилось. Запись maildrop
>- не идёт. её просто нет в списке доступных. Тогда пытаюсь
>при помощи ldapadmin создать такой тип записи. При указании в
>поле maildrop любого параметра выдаётся ошибка:
>LDAP Error! Синтаксическая ошибка objectClass: value #0 invalid per syntax.В какой схеме определен objectclass, имеющий атрибут maildrop?
mail - это атрибут класса inetOrgPerson или нижележащего класса.Вот здесь описана настройка courier-imap и ldap:
http://www.lissyara.su/articles/freebsd/mail/postfix+sasl+ld.../и там есть ссылка на файл схемы, содержащей класс qmailUser, и в
частности имеющий атрибуты mailMessageStore (собственно то, что нужно)
и mailQuotaSize.В конфиге курьера значение атрибута, содержащего имя мейлдропа,
задается параметром LDAP_HOMEDIR в authldaprc.
>[оверквотинг удален]
>>LDAP Error! Синтаксическая ошибка objectClass: value #0 invalid per syntax.
>
>В какой схеме определен objectclass, имеющий атрибут maildrop?
>mail - это атрибут класса inetOrgPerson или нижележащего класса.
>
>Вот здесь описана настройка courier-imap и ldap:
>http://www.lissyara.su/articles/freebsd/mail/postfix+sasl+ld.../
>
>и там есть ссылка на файл схемы, содержащей класс qmailUser, и в
>Увы, увы, мой браузер не разделяет ваше воодушевление, цитирую его : "К сожалению, Google Chrome не может найти страницу fr33man.ru."
Может есть другой линк?>частности имеющий атрибуты mailMessageStore (собственно то, что нужно)
>и mailQuotaSize.
>
>В конфиге курьера значение атрибута, содержащего имя мейлдропа,
>задается параметром LDAP_HOMEDIR в authldaprc.Это я видел и прописывал, толку - ноль целых и ноль десятых Я даже maildirmake пользовался. не хочет он переходить в нужную директорию, грит надо записи в ldap
>>и там есть ссылка на файл схемы, содержащей класс qmailUser, и в
>>
>
>Увы, увы, мой браузер не разделяет ваше воодушевление, цитирую его : "К
>сожалению, Google Chrome не может найти страницу fr33man.ru."
>Может есть другой линк?http://www.zytrax.com/books/ldap/ape/qmail.html
>
>>частности имеющий атрибуты mailMessageStore (собственно то, что нужно)
>>и mailQuotaSize.
>>
>>В конфиге курьера значение атрибута, содержащего имя мейлдропа,
>>задается параметром LDAP_HOMEDIR в authldaprc.
>
>Это я видел и прописывал, толку - ноль целых и ноль десятыхПосле подключения qmail.schema, в authldaprc написать:
LDAP_HOMEDIR mailMessageStore
Ну и пользователям всем этот атрибут прописать и указать в нем имя мейлдропа.
>Я даже maildirmake пользовался. не хочет он переходить в нужную директорию,
>грит надо записи в ldap
>[оверквотинг удален]
>
>После подключения qmail.schema, в authldaprc написать:
>
>LDAP_HOMEDIR mailMessageStore
>
>Ну и пользователям всем этот атрибут прописать и указать в нем имя
>мейлдропа.
>
>>Я даже maildirmake пользовался. не хочет он переходить в нужную директорию,
>>грит надо записи в ldapОгромное спасибо за линк. Пойду пробовать
>[оверквотинг удален]
>>
>>LDAP_HOMEDIR mailMessageStore
>>
>>Ну и пользователям всем этот атрибут прописать и указать в нем имя
>>мейлдропа.
>>
>>>Я даже maildirmake пользовался. не хочет он переходить в нужную директорию,
>>>грит надо записи в ldap
>
>Огромное спасибо за линк. Пойду пробоватьУвы, с этой схемой мой ldap не стартует...
>[оверквотинг удален]
>>>
>>>Ну и пользователям всем этот атрибут прописать и указать в нем имя
>>>мейлдропа.
>>>
>>>>Я даже maildirmake пользовался. не хочет он переходить в нужную директорию,
>>>>грит надо записи в ldap
>>
>>Огромное спасибо за линк. Пойду пробовать
>
>Увы, с этой схемой мой ldap не стартует...line 17 (include /usr/local/etc/openldap/schema/qmail.schema)
reading config file /usr/local/etc/openldap/schema/qmail.schema
line 22 (attributetype ( 1.3.6.1.4.1.7914.1.2.1.1 NAME 'qmailUID' DESC 'UID of the user on the mailsystem' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 ))
/usr/local/etc/openldap/schema/qmail.schema: line 22 attributetype: AttributeType inappropriate matching rule: "integerMatch"
/usr/local/etc/openldap/slapd.conf: line 17: <include> handler exited with 1!
slapd stopped.
connections_destroy: nothing to destroy.
/usr/local/etc/rc.d/slapd: WARNING: failed to start slapd
>[оверквотинг удален]
>line 17 (include /usr/local/etc/openldap/schema/qmail.schema)
>
>reading config file /usr/local/etc/openldap/schema/qmail.schema
>line 22 (attributetype ( 1.3.6.1.4.1.7914.1.2.1.1 NAME 'qmailUID' DESC 'UID of the user
>on the mailsystem' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 ))
>/usr/local/etc/openldap/schema/qmail.schema: line 22 attributetype: AttributeType inappropriate matching rule: "integerMatch"
>/usr/local/etc/openldap/slapd.conf: line 17: <include> handler exited with 1!
>slapd stopped.
>connections_destroy: nothing to destroy.
>/usr/local/etc/rc.d/slapd: WARNING: failed to start slapdВзял отсюда http://www.bayour.com/openldap/schemas/
Потом убрал атрибут mailHost? который дублируется в misc.schema. Стартанул. Дальше посмотрим.
>[оверквотинг удален]
>>line 22 (attributetype ( 1.3.6.1.4.1.7914.1.2.1.1 NAME 'qmailUID' DESC 'UID of the user
>>on the mailsystem' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 ))
>>/usr/local/etc/openldap/schema/qmail.schema: line 22 attributetype: AttributeType inappropriate matching rule: "integerMatch"
>>/usr/local/etc/openldap/slapd.conf: line 17: <include> handler exited with 1!
>>slapd stopped.
>>connections_destroy: nothing to destroy.
>>/usr/local/etc/rc.d/slapd: WARNING: failed to start slapd
>
>Взял отсюда http://www.bayour.com/openldap/schemas/
>Потом убрал атрибут mailHost? который дублируется в misc.schema. Стартанул. Дальше посмотрим.Увы...
Mar 26 15:20:11 route slapd[10571]: connection_get(12): got connid=1001
Mar 26 15:20:11 route slapd[10571]: connection_read(12): checking for input on id=1001
Mar 26 15:20:11 route slapd[10571]: op tag 0x66, time 1269616811
Mar 26 15:20:11 route slapd[10571]: conn=1001 op=9 do_modify
Mar 26 15:20:11 route slapd[10571]: >>> dnPrettyNormal: <uid=testus,ou=Users,dc=bsd,dc=home>
Mar 26 15:20:11 route slapd[10571]: <<< dnPrettyNormal: <uid=testus,ou=Users,dc=bsd,dc=home>, <uid=testus,ou=users,dc=bsd,dc=home>
Mar 26 15:20:11 route slapd[10571]: conn=1001 op=9 MOD dn="uid=testus,ou=Users,dc=bsd,dc=home"
Mar 26 15:20:11 route slapd[10571]: conn=1001 op=9 MOD attr=objectClass maildrop
Mar 26 15:20:11 route slapd[10571]: send_ldap_result: conn=1001 op=9 p=3
Mar 26 15:20:11 route slapd[10571]: send_ldap_response: msgid=366 tag=103 err=21
Mar 26 15:20:11 route slapd[10571]: conn=1001 op=9 RESULT tag=103 err=21 text=objectClass: value #0 invalid per syntax
Пофиксил и это - скачал схему postfix.schema и всё стало на свои места при заполнении ldap. Появилась другая проблема которая растёт из тех же ног:root@route /usr/local/etc/openldap/schema/:tail -f /var/log/maillog
Mar 26 17:09:21 route authdaemond: Authenticated: clearpasswd=123, passwd={CRYPT}IB4./y1UBLbvA
Mar 26 17:10:07 route pop3d: testus@bsd.home: chdir(/var/mail/testus/) failed!!
Mar 26 17:10:07 route pop3d: error: Permission denied
Mar 26 17:10:07 route pop3d: LOGIN FAILED, user=testus, ip=[127.0.0.1]
Mar 26 17:10:07 route pop3d: authentication error: Permission denied
Mar 26 17:10:07 route authdaemond: Authenticated: sysusername=<null>, sysuserid=1002, sysgroupid=513, homedir=/var/mail/testus/, address=testus@bsd.home, fullname=testus, maildir=<null>, quota=<null>, options=<null>
Mar 26 17:10:07 route authdaemond: Authenticated: clearpasswd=123, passwd={CRYPT}IB4./y1UBLbvA
Mar 26 17:10:37 route pop3d: chdir Maildir: No such file or directory
Mar 26 17:10:37 route authdaemond: Authenticated: sysusername=<null>, sysuserid=1002, sysgroupid=513, homedir=/var/mail/testus/, address=testus@bsd.home, fullname=testus, maildir=<null>, quota=<null>, options=<null>
Mar 26 17:10:37 route authdaemond: Authenticated: clearpasswd=123, passwd={CRYPT}IB4./y1UBLbvAпри этом права уже от отчаяния выставил 777 на папку
root@route /usr/local/etc/courier-imap/:ll /var/mail/| grep test
drwxrwxrwx 5 testus mail 512 26 мар 12:20 testus
root@route /usr/local/etc/courier-imap/:Что теперь может не нравиться врагу отчизны?
>[оверквотинг удален]
>Mar 26 17:10:37 route authdaemond: Authenticated: clearpasswd=123, passwd={CRYPT}IB4./y1UBLbvA
>
>при этом права уже от отчаяния выставил 777 на папку
>root@route /usr/local/etc/courier-imap/:ll /var/mail/| grep test
>drwxrwxrwx 5 testus mail
> 512 26 мар
>12:20 testus
>root@route /usr/local/etc/courier-imap/:
>
>Что теперь может не нравиться врагу отчизны?надо смотреть права на все элементы пути, а не только на конечный.
>[оверквотинг удален]
>>root@route /usr/local/etc/courier-imap/:ll /var/mail/| grep test
>>drwxrwxrwx 5 testus mail
>> 512 26 мар
>>12:20 testus
>>root@route /usr/local/etc/courier-imap/:
>>
>>Что теперь может не нравиться врагу отчизны?
>
>надо смотреть права на все элементы пути, а не только на конечный.
>Спасибо. Вопрос уже разрешился. Не знаю почему, но заработало, только с подключением схемы postfix.schema. И с правами плясать не пришлось.