Warning, /pim/kdepim-runtime/resources/ews/README.md is written in an unsupported language. File is not indexed.

0001 ## Akonadi resource for Microsoft Exchange Web Services
0002 
0003 This Akonadi resource provides the ability to use Microsoft Exchange accounts
0004 with KDE PIM applications like KMail and KOrganizer.
0005 
0006 It allows to use KDE PIM applications with Exchange mailboxes, for which the
0007 server administrator has not enabled access using standard e-mail protocols
0008 (IMAP, POP3 or SMTP). Additionally since the resource communicates with Exchange
0009 using its native protocol (also used by Microsoft Outlook) it allows to use the
0010 full capabilities of Exchange which are not accessible over IMAP or POP3.
0011 
0012 The aim of this project is to allow full management of Exchange mailboxes so
0013 that the KDE PIM suite can become a drop-in replacement for Microsoft Outlook.
0014 
0015 Currently the EWS resource is an independent project, but in the long term the
0016 plan is for this to become part of KDE PIM.
0017 
0018 ### Current status
0019 
0020 The EWS resource is currently in preview state. It can be used as a daily driver
0021 when it comes to e-mail. For other tasks like calendar interaction (scheduling
0022 and accepting meetings) it is necessary to use either OWA or Microsoft Outlook.
0023 
0024 ### Supported features
0025 
0026 * E-mail reception and full mailbox access
0027 * Message & folder operations (copying, moving, deleting)
0028 * Sending e-mail through Exchange (by default Exchange doesn't use SMTP to send
0029   messages from clients)
0030 * Server-side tags
0031 * Calendar view (read-only)
0032 
0033 ### Planned features
0034 
0035 * Full calendar support (currently only read-only support is provided)
0036 * Task support
0037 * Server-side address autocompletion (will need to sort out some KDE PIM
0038   limitations)
0039 * Out-of-office status manipulation
0040 * Server-side message filtering
0041 * Access to additional mailboxes & shared calendars
0042 
0043 ### Software requirements
0044 
0045 * Microsoft Exchange 2007 SP1 or later
0046 * Qt 5.5 or later
0047 * KDE Frameworks 5.17 or later (at least 5.19 is recommended when using NTLMv2
0048   authentication)*
0049 * KDE PIM 15.04.0 or later
0050 
0051 \* Alternatively you can also recompile the `kio` package and backport the
0052 following commits from [kio.git](https://quickgit.kde.org/?p=kio.git):
0053 
0054 * 5961ac8e Fix NTLMv2 stage 3 response creation
0055 * 2f894291 Try NTLMv2 authentication if the server denies NTLMv1
0056 * f665dd30 Try multiple authentication methods in case of failures
0057 
0058 The last commit is only necessary if your system is also configured to use Kerberos.
0059 
0060 ### Debugging
0061 
0062 #### Some Akonadi basics
0063 
0064 Akonadi runs every resource in a separate process, which communicates to
0065 the Akonadi server over DBus. When multiple instances of the same resource (for
0066 ex. multiple Exchange accounts) are present, each of them also runs in a
0067 separate process. You can easily find out your EWS resource instances by
0068 running `ps -fu $(whoami) | grep akonadi_ews_resource`.
0069 
0070 Each Akonadi resource has a unique identifier. It is composed automatically out
0071 of the resource name and a number, which starts from 0 and is incremented with
0072 every new resource of that type. Removing a resource and adding it again will
0073 not reset the counter. For example the first instance of the EWS resource would
0074 use the identifier `akonadi_ews_resource_0`. The actual resource identifier is
0075 visible in the command line of the resource process after executing the `ps`
0076 command above.
0077 
0078 #### Running the resource process in the terminal
0079 
0080 By default the resource processes are started by the Akonadi server in the
0081 background. All the output is sent to the log (either the journal in case of
0082 systemd or the ~/.xsession-errors otherwise).
0083 
0084 It is possible to run the resource process in the foreground in which case all
0085 the logs will be visible in the active console. Such mode of operation is very
0086 useful for debugging.
0087 
0088 To run the resource process interactively:
0089 
0090  1. Learn the resource identifier (use the `ps` command above).
0091  2. Kill the resource process. This needs to be done a few times as Akonadi will
0092     initially try to restart the resource. The easiest way is to execute
0093         `while [ $(killall akonadi_ews_resource) ]; do sleep 1; done`. Warning, if
0094     you have several instances of the Exchange resource (several accounts) this
0095     command will terminate all of them.
0096  3. Execute the resource process interactively (substitute the identifier with
0097     the one obtained in step 1:
0098     `akonadi_ews_resource --identifier akonadi_ews_resource_0`.
0099 
0100 Once running interactively you can at any moment terminate it by pressing Ctrl+C
0101 and start it again.
0102 
0103 In order to run the resource process in the background again you have to restart
0104 Akonadi by executing `akonadictl restart`.
0105 
0106 #### Enabling additional debug messages.
0107 
0108 Currently there are two kinds of debug messages that can be enabled in addition
0109 to the default ones:
0110 
0111  - Request information (log_ews_resource_request) - prints information about each
0112    EWS request sent and the response received.
0113  - Protocol information (log_ews_resource_proto) - dumps all request and
0114    response data (XML).
0115 
0116 To enable these messages edit (or create) the file
0117 `~/.config/QtProject/qtlogging.ini` and put the following lines inside:
0118 
0119 ```
0120 [Rules]
0121 log_ews_resource_request.debug=true
0122 log_ews_resource_proto.debug=true
0123 ```
0124 
0125 Setting each of them to `false` or adding a `#` character in front of the line
0126 will disable each of the logging categories.
0127 
0128 When starting the resource interactively make sure to edit the file and adjust
0129 the debug messages before actually starting the resource.
0130 
0131 #### Request dumps
0132 
0133 When the protocol information messages are enabled or when some request fails
0134 the contents of the request and the associated response will be dumped into
0135 files in your `/tmp/` directory. The names of the relevant files will be printed
0136 in the log next to the information about the failed request. Attaching such
0137 dumps can be useful for debugging, however before doing so please make sure they
0138 don't contain any confidential information.
0139 
0140 ### Reporting bugs
0141 
0142 Please report bugs on the GitHub project page. In most cases it will be a great
0143 help when logs are provided.
0144 
0145 Note however that the logs may information from your e-mail that might include
0146 company confidential information. Before sending any logs please review them and
0147 make sure any such information like e-mail addresses, dates or subjects is
0148 anonymized (i.e. replaced by some meaningless information).