|
One additional note. It's not 5.0 specific. This problem exists at least with SOGo 4.2. I don't use SOGo before 4.2 |
|
|
Did you map your "jpegPhoto" LDAP attribute to "photo" in sogo.conf? |
|
|
Yes. Contact pictures are there in the SOGo's Webinterface, but not in any CardDAV client I've tried.
This is my mapping:
mapping = {
ou = ("department");
photo = ("jpegPhoto");
first = ("givenName");
last = ("sn");
}; |
|
|
Still there in 5.0.1 |
|
|
Still there in 5.1.0 |
|
|
Still there in 5.2.0. Webinterface shows the contact image, CardDAV-sync not. |
|
|
Still there in 5.5.0. Webinterface shows contact photo in the Global addressbook, any CardDAV doesn't show contact photos of Global addressbook |
|
|
This have been supported since version 3.2.x. Is your mapping configured under the proper users source? |
|
|
Mapping should be fine. I have the same config like in my comment on 2020-09-16. Samba 4 use jpegPhoto. There are contact photos in the global addressbook, but only in SOGO's webinterface. Any CardDAV client doesn't show a contact photo in the global addressbook. |
|
|
Share an anonymized version of your sogo.conf . |
|
|
{
SOGoProfileURL = "postgresql://user:password@postgres:5432/sogo_db/sogo_user_profile";
OCSFolderInfoURL = "postgresql://user:password@postgres:5432/sogo_db/sogo_folder_info";
OCSSessionsFolderURL = "postgresql://user:password@postgres:5432/sogo_db/sogo_sessions_folder";
SOGoDraftsFolderName = Drafts;
SOGoSentFolderName = Sent;
SOGoTrashFolderName = Trash;
SOGoIMAPServer = "imaps://mail.example.com:993";
SOGoSieveServer = "sieve://mail.example.com:4190/?tls=YES";
SOGoSMTPServer = mail.example.com;
SOGoMailDomain = example.com;
SOGoMailingMechanism = smtp;
SOGoSMTPAuthenticationType = PLAIN;
SOGoForceExternalLoginWithEmail = YES;
NGImap4ConnectionStringSeparator = "/";
SOGoAppointmentSendEMailNotifications = YES;
SOGoACLsSendEMailNotifications = YES;
SOGoFoldersSendEMailNotifications = YES;
SOGoNotifyOnPersonalModifications = NO;
SOGoNotifyOnExternalModifications = YES;
SOGoPasswordChangeEnabled = YES;
SOGoUserSources = (
{
type = ldap;
CNFieldName = displayName;
UIDFieldName = sAMAccountName;
IDFieldName = cn;
baseDN = "OU=accounts,dc=mydomain,dc=domain";
bindDN = "CN=readonly,CN=users,DC=my,DC=domain";
bindFields = (sAMAccountName, mail);
bindPassword = password;
canAuthenticate = YES;
updateSambaNTLMPasswords = YES;
displayName = "Directory";
hostname = "ldap://my.samba4.server:389";
filter = "mail = '*'";
KindFieldName = extensionName;
MultipleBookingsFieldName = localeID;
id = directory;
isAddressBook = YES;
MailFieldNames = (mail, otherMailbox);
mapping = {
ou = ("department");
photo = ("jpegPhoto");
first = ("givenName");
last = ("sn");
};
}
);
SOGoPageTitle = PageTitle;
SOGoVacationEnabled = YES;
SOGoForwardEnabled = YES;
SOGoSieveScriptsEnabled = YES;
SOGoMailAuxiliaryUserAccountsEnabled = NO;
SOGoXSRFValidationEnabled = YES;
SOGoLanguage = English;
SOGoTimeZone = Europe/Berlin;
SOGoCalendarDefaultRoles = (
PublicDAndTViewer,
ConfidentialDAndTViewer
);
SOGoSuperUsernames = (superusername);
SxVMemLimit = 512;
SOGoMemcachedHost = "memcached";
WOPort = "0.0.0.0:20000";
WOWorkersCount = 8;
SOGoMailCustomFromEnabled = YES;
SOGoHelpURL = "https://sogo.nu/files/docs/SOGoInstallationGuide.html";
SOGoLoginModule = Mail;
SOGoMailListViewColumnsOrder = (Flagged, Attachment, Priority, From, Subject, Unread, Date, Size);
SOGoExternalAvatarsEnabled = NO;
SOGoGravatarEnabled = NO;
SOGoAlternateAvatar = none;
SOGoRefreshViewCheck = manually;
SOGoFirstDayOfWeek = 1;
SOGoFirstWeekOfYear = First4DayWeek;
SOGoCalendarDefaultReminder = -PT15M;
SOGoDayStartTime = 8;
SOGoDayEndTime = 17;
SOGoMailMessageForwarding = inline;
SOGoMailReplyPlacement = above;
SOGoMailSignaturePlacement = above;
SOGoMailComposeMessageType = text;
SOGoEnableEMailAlarms = NO;
SOGoSieveFolderEncoding = UTF-8;
MySQL4Encoding = "utf8mb4";
SOGoAnimationMode = normal;
SOGoIMAPAclConformsToIMAPExt = YES;
SOGoiPhoneForceAllDayTransparency = NO;
SOGoEnablePublicAccess = YES;
SOGoMaximumFailedLoginCount = 5;
SOGoFreeBusyDefaultInterval = (3,7);
WOMaxUploadSize = 102400;
SOGoMaximumMessageSizeLimit = 102400;
SOGoGoogleAuthenticatorEnabled = YES;
} |
|
|
Can you also share the LDIF record of Alice? Fetch it with ldapsearch . |
|
|
I have deleted some entries like SSH Key (altsecurityidentities), Password, ...
dn: CN=alice,OU=Users,OU=Accounts,DC=example,DC=net
accountexpires: 9223372036854775807
altsecurityidentities: ssh-rsa (...)
badpasswordtime: 0
badpwdcount: 0
cn: alice
codepage: 0
countrycode: 0
department: Department
displayname: Alice Wonderland
distinguishedname: CN=alice,OU=Users,OU=Accounts,DC=example,DC=net
employeenumber: 333
facsimiletelephonenumber: 22222
gidnumber: 2000
givenname: Alice
instancetype: 4
jpegphoto:: /9j/4AAQSkZJRgABAQAAAQABAAD/4g0YSUNDX1BST0ZJTEUAAQEAAA0IYXBwbAIQ
AABtbnRyUkdCIFhZWiAH4wABAAIACAAjADJhY3NwQVBQTAAAAABBUFBMAAAAAAAAAAAAAAAAAAA
AAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAABFkZXNjAAABUAAAAGJkc2NtAAABtAAAAe5jcHJ0AAADpAAAACN3dHB0AAADyAAAA
BRyWFlaAAAD3AAAABRnWFlaAAAD8AAAABRiWFlaAAAEBAAAABRyVFJDAAAEGAAACAxhYXJnAAAM
JAAAACB2Y2d0AAAMRAAAADBuZGluAAAMdAAAAD5jaGFkAAAMtAAAACxtbW9kAAAM4AAAAChiVFJ
DAAAEGAAACAxnVFJDAAAEGAAACAxhYWJnAAAMJAAAACBhYWdnAAAMJAAAACBkZXNjAAAAAAAAAA
hEaXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAmAAAADGhySFIAAAAW
AAAB2GtvS1IAAAAWAAAB2G5iTk8AAAAWAAAB2GlkAAAAAAAWAAAB2Gh1SFUAAAAWAAAB2GNzQ1o
AAAAWAAAB2GRhREsAAAAWAAAB2G5sTkwAAAAWAAAB2GZpRkkAAAAWAAAB2Gl0SVQAAAAWAAAB2G
VzRVMAAAAWAAAB2HJvUk8AAAAWAAAB2GZyQ0EAAAAWAAAB2GFyAAAAAAAWAAAB2HVrVUEAAAAWA
AAB2GhlSUwAAAAWAAAB2HpoVFcAAAAWAAAB2HZpVk4AAAAWAAAB2HNrU0sAAAAWAAAB2HpoQ04A
AAAWAAAB2HJ1UlUAAAAWAAAB2GVuR0IAAAAWAAAB2GZyRlIAAAAWAAAB2G1zAAAAAAAWAAAB2Gh
pSU4AAAAWAAAB2HRoVEgAAAAWAAAB2GNhRVMAAAAWAAAB2GVuQVUAAAAWAAAB2GVzWEwAAAAWAA
AB2GRlREUAAAAWAAAB2GVuVVMAAAAWAAAB2HB0QlIAAAAWAAAB2HBsUEwAAAAWAAAB2GVsR1IAA
AAWAAAB2HN2U0UAAAAWAAAB2HRyVFIAAAAWAAAB2HB0UFQAAAAWAAAB2GphSlAAAAAWAAAB2ABE
AEUATABMACAAUAAyADQAMQAyAEgAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMTk
AAFhZWiAAAAAAAADz2AABAAAAARYIWFlaIAAAAAAAAF3SAAAvkQAAAZRYWVogAAAAAAAAbxcAAM
IIAAAMc1hZWiAAAAAAAAAp7AAADmYAAMUmY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoA
C0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKMAqACtALIA
twC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgF
ZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAj
gCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DW
gNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTE
BNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBns
GjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4Igg
iWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcC
vMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4N
qQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC
5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFC
cUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9
xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwq
HFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQ
g8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxy
X3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K
2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIx
SjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDe
cN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPm
A+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFm
kXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1K
TZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXV
VwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl
5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z
5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBx
OnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHt
je8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg
6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP
5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3
nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTe
pqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2Ab
Z5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw
9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzR
vtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A
24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070
DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3
P9t//9wYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW3ZjZ3QAAAAAAAAAAQABAAAAAAAA
AAEAAAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAApoAAAFVAAABVAAAAn4A
AAChAAAANgAAAUEAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABC7cAAAWW///zVw
AABykAAP3X///7t////aYAAAPaAADA9m1tb2QAAAAAAAAQrAAAoH0wSzJVzMSbAAAAAAAAAAAAA
AAAAAAAAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJ
DRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBA
QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCADAAMADAREAAhEBAxEB/8QAHQ
AAAQQDAQEAAAAAAAAAAAAABgAEBQcCAwgJAf/EAEUQAAEDAwIDBgMFBgIIBwEAAAECAwQABREGI
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
l: Town
lastlogoff: 0
lastlogon: 0
lastlogontimestamp: 034892202087003370
loginshell: /bin/bash
logoncount: 0
mail: alice@example.net
memberof: CN=app1,OU=Services,DC=example,DC=net
memberof: CN=app2,OU=Services,DC=example,DC=net
memberof: CN=app3,OU=Services,DC=example,DC=net
memberof: CN=app4,OU=Services,DC=example,DC=net
name: alice
o: Company
objectcategory: CN=Person,CN=Schema,CN=Configuration,DC=example,DC=net
objectclass: top
objectclass: posixAccount
objectclass: securityPrincipal
objectclass: person
objectclass: organizationalPerson
objectclass: user
objectguid:: xxxx
objectsid:: xxxx
othermailbox: wonderland@example.net
othertelephone: 54321
postalcode: 11111
primarygroupid: 513
pwdlastset: 142546557728976510
samaccountname: alice
samaccounttype: 805306368
sn: Wonderland
st: Region
streetaddress: Street No 1
telephonenumber: 12345
uid: alice
uidnumber: 2001
unixhomedirectory: /home/example.net/alice
unixuserpassword: {SSHA}xxxx
useraccountcontrol: 66048
userprincipalname: alice@example.net
usnchanged: 6305
usncreated: 3846
whenchanged: 1234
whencreated: 1234 |
|
|
I found a difference. SOGo saves the format of the contact photo field as it is from a CardDAV client and send it back in the same format. Because SOGo's webinterface can't add/change/delete contact photo field in the private addressbook (or I never found the option). Only when it comes to LDAP addressbook, SOGo assembles contact photo field from LDAP to the CardDAV VCF format.
Now I have created two new contacts. One in iOS contacts app, the other in Roundcubes CardDAV addon and traced, what SOGo send to the macOS contact app.
created with iOS contacts app:
PHOTO;ENCODING=b;TYPE=PNG;X-ABCROP-RECTANGLE=ABClipRect_1&5&5&230&230&KlkUb
mG59NNOfREz7ubtmQ==:iVBORw0KGgoAAAANSUhEUgAAAPAAAADwCAYAAAA+VemSAAAKwmlDQ1
(...)
created with Roundcube CardDAV add-on:
PHOTO;VALUE=binary;ENCODING=b:/9j/4AAQSkZJRgABAQAASABIAAD/2wBDAAgGBgcGBQgHB
wcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL
(...)
This is what SOGo sends to the client, when it assembles a CardDAV VCF from LDAP:
PHOTO;ENCODING=BASE64:/9j/4AAQSkZJRgABAQAAAQABAAD/4g0YSUNDX1BST0ZJTEUAAQEAA
A0IYXBwbAIQAABtbnRy\nUkdCIFhZWiAH4wABAAIACAAjADJhY3NwQVBQTAAAAABBUFBMAAAAA
AAAAAAAAAAAAAAAAAAA\n9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(...)
Also I was able to try another CardDAV client, DAVx5 on Android. It shows the contact photo of SOGo's directory! It looks like iOS contact app, macOS contact app and EM-Client can't handle PHOTO;ENCODING=BASE64: , but at least PHOTO;VALUE=binary;ENCODING=b: . |
|
|
Correction: I use the app SimpleContacts on Android. DAVx5 is only the app for synchronisation. Also I want to mention, that SOGo's webinterface shows all photos, regardless of the "header". |
|
|
I found this <https://en.wikipedia.org/wiki/VCard> where vCard 3.0 shows this "header" as an example: PHOTO;TYPE=JPEG;ENCODING=b:[base64-data]
SOGo sends VERSION: 3.0
I've added this to Apache:
<Location "/SOGo/dav/MYUSER/Contacts/directory/">
SetOutputFilter INFLATE;SUBSTITUTE;DEFLATE
Substitute "s|PHOTO;ENCODING=BASE64:|PHOTO;TYPE=JPEG;ENCODING=b:|in"
</Location>
Now iOS contacts app works and shows photos from global addressbook! macOS contacts app still doesn't work. Have tried different variants, but all fails. I thought it was because the line is now longer than 75 chars:
<https://www.rfc-editor.org/rfc/rfc2426#section-2.6>
But also shorter replacements doesn't work.
Also I see that the vcard will be send twice to the client, one vCard with address-data , second one with addressbook-data in an "envelope". Is this ok?
Want to paste the output, but it looks like Mantis doesn't allow me to paste long notes anymore. |
|
|
Second try:
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav"><D:response><D:href>/SOGo/dav/MYUSER/Contacts/directory/alice</D:href><D:propstat><D:prop><D:getetag>hash38075224</D:getetag><C:address-data>BEGIN:VCARD
UID:alice
VERSION:3.0
CLASS:PUBLIC
PROFILE:VCARD
PRODID:-//Inverse inc./SOGo 5.5.1//EN
N:Wonderland;Alice
FN:Alice Wonderland
ADR;TYPE=work:;;;City;;12345
ORG:Firma;Department
TEL;TYPE=work:12345
TEL;TYPE=fax:22222
EMAIL;TYPE=work:alice@example.net
EMAIL;TYPE=work:wonderland@example.net
PHOTO;ENCODING=b:/9j/4AAQSkZJRgABAQAAAQABAAD/4g0YSUNDX1BST0ZJTEUAAQEAA
A0IYXBwbAIQAABtbnRy\nUkdCIFhZWiAH4wABAAIACAAjADJhY3NwQVBQTAAAAABBUFBMAAAAA
(...)
CMCrKLMFlnBjfO4vcs5\nXJdIE63PgKS60pJ28xik4NkjLRsdD9F5CHU00czN7j8rqTgHeHbxw
w05MkrKnlQG0LUTklSR\nyk/Svg/jClZQY9Uwx7Bx+6/RrhKrdXYDTTv1JYLlf//Z
END:VCARD</C:address-data><C:addressbook-data>BEGIN:VCARD
UID:alice
VERSION:3.0
CLASS:PUBLIC
PROFILE:VCARD
PRODID:-//Inverse inc./SOGo 5.5.1//EN
N:Wonderland;Alice
FN:Alice Wonderland
ADR;TYPE=work:;;;City;;12345
ORG:Firma;Department
TEL;TYPE=work:12345
TEL;TYPE=fax:22222
EMAIL;TYPE=work:alice@example.net
EMAIL;TYPE=work:wonderland@example.net
PHOTO;ENCODING=b:/9j/4AAQSkZJRgABAQAAAQABAAD/4g0YSUNDX1BST0ZJTEUAAQEAA
A0IYXBwbAIQAABtbnRy\nUkdCIFhZWiAH4wABAAIACAAjADJhY3NwQVBQTAAAAABBUFBMAAAAA
(...)
CMCrKLMFlnBjfO4vcs5\nXJdIE63PgKS60pJ28xik4NkjLRsdD9F5CHU00czN7j8rqTgHeHbxw
w05MkrKnlQG0LUTklSR\nyk/Svg/jClZQY9Uwx7Bx+6/RrhKrdXYDTTv1JYLlf//Z
END:VCARD</C:addressbook-data></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response></D:multistatus> |
|
|
Still a problem in 5.8.0
5.8.2 doesn't sync address book at all for now. |
|