Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
linux_faq:evolution_preconfigure [2019/07/04 06:30] adminlinux_faq:evolution_preconfigure [2019/07/04 07:42] (current) admin
Line 1: Line 1:
 +====== Автоматическая конфигурация Evolution для работы с exchange ======
 +Понадобилось сконфигурировать почтовый клиент **evolution** для того, чтобы он работал как **MS outlook** - при первом входе пользователя конфигурировался автоматически, на базе данных из **AD** и сервиса **Autodiscovery EWS**.
  
 +====== Evolution в Gnome ======
 +Вот вариант для **Gnome**. \\
 +В двух словах - с помощью **gconftool-2** можно выгрузить текущую конфигурацию **evolution**. \\
 +Скорректировать ее для нового пользователя и залить в профиль. \\
 +https://wiki.gnome.org/Apps/Evolution/GConfTools
 +
 +====== Evolution в KDE ======
 +В **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** для работы в домене - [[linux_faq:ubuntu_setup_script|Ubuntu Setup Script]] 
 +<code>#! /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);">С уважением,&nbsp;<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
 +
 +
 +</code>