Понадобилось сконфигурировать почтовый клиент evolution для того, чтобы он работал как MS outlook - при первом входе пользователя конфигурировался автоматически, на базе данных из AD и сервиса Autodiscovery EWS.
Вот вариант для Gnome.
В двух словах - с помощью gconftool-2 можно выгрузить текущую конфигурацию evolution.
Скорректировать ее для нового пользователя и залить в профиль.
https://wiki.gnome.org/Apps/Evolution/GConfTools
В KDE нужно создать файлики evolution source (~/.config/evolution/source), в которых лежит описание почтовой конфигурации.
https://wiki.gnome.org/Apps/Evolution/ESourceFileFormat
Вот скрипт, который берет из AD аттрибут пользователя mail, выполняет autodiscovery и заполняет файлики evolution source.
Также скрипт автоматически создает подпись, в которой можно использовать аттрибуты AD.
Этот скрипт можно поместить в автозагрузку в дефолтный профиль (например в директорию /etc/skel/.kde/Autostart ) и тогда evolution будет автоматически конфигурировать почту на базе данных из AD, совсем как Outlook.
Для работы скрипта необходимо, чтобы системы была корректно введена домен с помощью samba+winbind. Этот скрипт создавался как часть скрипта, конфигурирующего систему на базе Ubuntu для работы в домене - Ubuntu Setup Script
#! /bin/bash export GIO_USE_NETWORK_MONITOR=base DOMAINNAME=`hostname -d` ######################################################################## ### Check if Evolution EWS source files already exist. If exist - exit 0 ####################################################################### for f in ~/.config/evolution/sources/*$HOSTNAME.source; do [ -e "$f" ] && exit 0 ; break; done ########################################## ## Check if connected to AD ########################################## if ! wbinfo -P; then echo "NETLOGON test failed" >> ~/.ews_setup.log else echo "NETLOGON test OK" >> ~/.ews_setup.log CURRENT_DC=`wbinfo -P | awk '{print $9}' | awk -F "\"" '{print $2}'` BASEDN=`echo $CURRENT_DC | sed s/^[^.]*.//g | sed s/"\."/,dc=/g | sed s/^/dc=/` FULL_NAME=`ldapsearch -h $CURRENT_DC -b "$BASEDN" "sAMAccountName=$USER" | grep displayName: | awk '{print $2 }' | base64 -d` MAIL=`ldapsearch -h $CURRENT_DC -b "$BASEDN" "sAMAccountName=$USER" | grep mail: | awk '{print $2 }'` NAME_PREFIX=`date +%s.%N | cut -c 1-16` ############################################################################################### ### MS Exchange autodiscovery #### https://github.com/sys4/automx/blob/master/src/automx-test #### http://stackoverflow.com/questions/38509837/when-using-negotiate-with-curl-is-a-keytab-file-required #### Joined AD with samba/winbind and have package gss-ntlmssp ############################################################################################### AUTOD_URL="https://autodiscover.`echo $MAIL | sed 's/^.*@//'`"/autodiscover/autodiscover.xml REQUEST=$(cat <<EOF <Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006"> <Request> <EMailAddress>$MAIL</EMailAddress> <AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema> </Request> </Autodiscover> EOF ) bash -c "curl -k -d '$REQUEST' --header \"Content-Type: text/xml\" -s --negotiate -u : $AUTOD_URL" > ~/.autodiscover.xml #bash -c "curl -v -k -d '$REQUEST' --header \"Content-Type: text/xml\" --ntlm --user username:userpassword $AUTOD_URL" > ~/.autodiscover.xml OABUrl=$(cat ~/.autodiscover.xml | grep -m 1 OABUrl | awk -F '[<>]' '{ print $3 }')oab.xml EwsUrl=$(cat ~/.autodiscover.xml | grep -m 1 EwsUrl | awk -F '[<>]' '{ print $3 }') EwsHost=$(echo $EwsUrl | awk -F '/' '{ print $3 }') rm ~/.autodiscover.xml echo CURRENT_DC - $CURRENT_DC > ~/.ews_setup.log echo FULL_NAME - $FULL_NAME >> ~/.ews_setup.log echo BASEDN - $BASEDN >> ~/.ews_setup.log echo MAIL - $MAIL >> ~/.ews_setup.log echo DOMAINNAME - $DOMAINNAME >> ~/.ews_setup.log echo OABUrl - $OABUrl >> ~/.ews_setup.log echo EwsUrl - $EwsUrl >> ~/.ews_setup.log echo EwsHost - $EwsHost >> ~/.ews_setup.log ################################################################ ### Check URLs format ################################################################ echo $OABUrl | grep -E '(https|http)://(([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&|=|+|$|,|/|\?|%|#|\[|\]])*/(oab|OAB)([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&|=|+|$|,|/|\?|%|#|\[|\]])*/oab.xml)' OAB_URL_Check=$? echo $EwsUrl | grep -E '(https|http)://(([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&|=|+|$|,|/|\?|%|#|\[|\]])*/(ews|EWS)([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&|=|+|$|,|/|\?|%|#|\[|\]])*/exchange.asmx)' EWS_URL_Check=$? if [ $OAB_URL_Check != 0 ] || [ $EWS_URL_Check != 0 ]; then echo "OAB and EWS URLs check failed... Exit..." >> ~/.ews_setup.log else echo "OAB and EWS URLs check OK" >> ~/.ews_setup.log ###################################################################### ### CleaningUp and creating evolution source files ###################################################################### killall evolution-source-registry rm -Rf ~/.config/evolution/sources mkdir --parents ~/.config/evolution/sources ##################################################################################### cat <<EOF > ~/.config/evolution/sources/$NAME_PREFIX.1@$HOSTNAME.source [Data Source] DisplayName=$MAIL Enabled=true Parent= [Offline] StaySynchronized=true [Authentication] Host=$EwsHost Method=GSSAPI Port=443 ProxyUid=system-proxy RememberPassword=true User=$USER CredentialName= [Collection] BackendName=ews CalendarEnabled=true ContactsEnabled=true Identity=$USER MailEnabled=true [Security] Method=none [Ews Backend] FilterInbox=true StoreChangesInterval=3 CheckAll=true ListenNotifications=true Email=$MAIL FilterJunk=true FilterJunkInbox=false FoldersInitialized=true GalUid=$NAME_PREFIX.0@$HOSTNAME Hosturl=$EwsUrl Oaburl=$OABUrl OabOffline=true OalSelected= Timeout=300 UseImpersonation=false ImpersonateUser= EOF ###################################################################### cat <<EOF > ~/.config/evolution/sources/$NAME_PREFIX.0@$HOSTNAME.source [Data Source] DisplayName=$MAIL Enabled=true Parent=$NAME_PREFIX.1@$HOSTNAME [Mail Composition] Bcc= Cc= DraftsFolder=folder://$NAME_PREFIX.3%40$HOSTNAME/%d0%a7%d0%b5%d1%80%d0%bd%d0%be%d0%b2%d0%b8%d0%ba%d0%b8 SignImip=true TemplatesFolder=folder://local/Templates [Mail Identity] Address=$MAIL Name=$FULL_NAME Organization= ReplyTo= SignatureUid=$NAME_PREFIX.33@$HOSTNAME [Mail Submission] SentFolder=folder://$NAME_PREFIX.3%40$HOSTNAME/%d0%9e%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5 TransportUid=$NAME_PREFIX.13@$HOSTNAME RepliesToOriginFolder=false EOF ###################################################################### cat <<EOF > ~/.config/evolution/sources/$NAME_PREFIX.3@$HOSTNAME.source [Data Source] DisplayName=$MAIL Enabled=true Parent=$NAME_PREFIX.1@$HOSTNAME [Refresh] Enabled=true IntervalMinutes=3 [Mail Account] BackendName=ews IdentityUid=$NAME_PREFIX.0@$HOSTNAME ArchiveFolder= EOF ############################################################################### cat <<EOF > ~/.config/evolution/sources/$NAME_PREFIX.13@$HOSTNAME.source [Data Source] DisplayName=$MAIL Enabled=true Parent=$NAME_PREFIX.1@$HOSTNAME [Mail Transport] BackendName=ews EOF ################################################################################ cat <<EOF > ~/.config/evolution/sources/local.source # Special built-in mail store. [Data Source] DisplayName=On This Computer Enabled=false Parent= [Mail Account] BackendName=maildir IdentityUid=self ArchiveFolder= [Maildir Backend] FilterInbox=true Path=$HOME/.local/share/evolution/mail/local EOF ######################################################################## cat <<EOF > ~/.config/evolution/sources/vfolder.source # Special built-in mail store. [Data Source] DisplayName=Search Folders Enabled=false Parent= [Mail Account] BackendName=vfolder IdentityUid=self ArchiveFolder= [Vfolder Backend] FilterInbox=true EOF ########################################################################## mkdir --parents ~/.config/evolution/mail/ cat <<EOF > ~/.config/evolution/mail/state.ini [GlobalFolder] GroupByThreads=false PreviewVisible=true [Store $NAME_PREFIX.3@$HOSTNAME] Expanded=true [Search Bar] SearchScope=mail-scope-current-folder SearchOption=mail-search-subject-or-addresses-contain [Folder Tree] Selected=folder://$NAME_PREFIX.3%40$HOSTNAME/%d0%92%d1%85%d0%be%d0%b4%d1%8f%d1%89%d0%b8%d0%b5 [Folder folder://$NAME_PREFIX.3%40$HOSTNAME/%d0%92%d1%85%d0%be%d0%b4%d1%8f%d1%89%d0%b8%d0%b5] GroupByThreads=false PreviewVisible=true Expanded=true EOF ###################################################################### ### Create Signature cat <<EOF > ~/.config/evolution/sources/$NAME_PREFIX.33@$HOSTNAME.source [Data Source] DisplayName=$MAIL Enabled=true Parent= [Mail Signature] MimeType=text/html EOF mkdir --parents ~/.config/evolution/signatures/ cat <<EOF > ~/.config/evolution/signatures/$NAME_PREFIX.33@$HOSTNAME <html><head></head><body><div><b style="color: rgb(0, 0, 0); font-family: Calibri, sans-serif; line-height: 18px;"><span style="font-size: 10pt; font-family: Arial, sans-serif; color: rgb(51, 51, 51);">С уважением, <br>$FULL_NAME</span></b><span style="line-height: 18px; font-size: 10pt; font-family: Arial, sans-serif; color: rgb(51, 51, 51);"></span><span style="line-height: 18px; font-size: 10pt; font-family: Arial, sans-serif; color: rgb(67, 150, 57);"><br><i>Даем людям уверенность и надежность!</i></span><span style="line-height: 18px; font-size: 10pt; font-family: Arial, sans-serif; color: rgb(51, 51, 51);"><br><a href="http://www.sberbank.ru/" style="color: purple;"><span style="color: blue;">www.sberbank.ru</span></a></span></div></body></html> EOF fi fi