f3f4e626dd0b5af6cb45855305d493471f0fb3a7
[asterisk/asterisk.git] / doc / tex / imapstorage.tex
1 By enabling IMAP Storage,  Asterisk will use native IMAP as the storage
2 mechanism for voicemail messages instead of using the standard file structure.
3
4 Tighter integration of Asterisk voicemail and IMAP email services allows
5 additional voicemail functionality, including:
6
7 \begin{itemize}
8  \item Listening to a voicemail on the phone will set its state to "read" in
9    a user's mailbox automatically.
10  \item Deleting a voicemail on the phone will delete it from the user's
11    mailbox automatically.
12  \item Accessing a voicemail recording email message will turn off the message
13    waiting indicator (MWI) on the user's phone.
14  \item Deleting a voicemail recording email will also turn off the message
15    waiting indicator, and delete the message from the voicemail system.
16 \end{itemize}
17
18 \subsection{Installation Notes}
19
20 \subsubsection{University of Washington IMAP C-Client}
21
22 If you do not have the University of Washington's IMAP c-client
23 installed on your system, you will need to download the c-client
24 source distribution (\url{http://www.washington.edu/imap/}) and compile it.
25 Asterisk supports both the 2004 and 2006 versions of c-client, however
26 mail\_expunge\_full is enabled in the 2006 version.
27
28 Note that Asterisk only uses the 'client' portion of the UW IMAP toolkit,
29 but building it also builds an IMAP server and various other utilities.
30 Because of this, the build instructions for the IMAP toolkit are somewhat
31 complicated and can lead to confusion about what is needed.
32
33 If you are going to be connecting Asterisk to an existing IMAP server,
34 then you don't need to care about the server or utilities in the IMAP
35 toolkit at all. If you want to also install the UW IMAPD server, that
36 is outside the scope of this document.
37
38 Building the c-client library is fairly straightforward; for example, on a
39 Debian system there are two possibilities:
40
41 \begin{enumerate}
42     \item If you will not be using SSL to connect to the IMAP server:
43    \begin{verbatim}
44         $ make slx SSLTYPE=none!
45    \end{verbatim}
46     \item If you will be using SSL to connect to the IMAP server:
47    \begin{verbatim}
48    $ make slx EXTRACFLAGS="-I/usr/include/openssl"
49    \end{verbatim}
50 \end{enumerate}
51
52 Once this completes you can proceed with the Asterisk build; there is no
53 need to run 'make install'.
54
55 \subsubsection{Compiling Asterisk}
56
57 To use the system c-client library, configure Asterisk with
58 ./configure --with-imap=system. If you downloaded the c-client source
59 and compiled it according to the above instructions, configure
60 Asterisk with with ./configure --with-imap=/usr/src/imap or where ever
61 you built the UWashington IMAP Toolkit. When you run 'make
62 menuselect', choose 'Voicemail Build Options' and the IMAP\_STORAGE
63 option should be available for selection.
64
65 After selecting the IMAP\_STORAGE option, use the 'x' key to exit
66 menuselect and save your changes, and the build/install Asterisk
67 normally.
68
69 \subsection{Modify voicemail.conf}
70
71 The following directives have been added to voicemail.conf:
72 \begin{astlisting}
73 \begin{verbatim}
74 imapserver=<name or IP address of IMAP mail server>
75 imapport=<IMAP port, defaults to 143>
76 imapflags=<IMAP flags, "novalidate-cert" for example>
77 expungeonhangup=<yes or no>
78 authuser=<username>
79 authpassword=<password>
80 \end{verbatim}
81 \end{astlisting}
82
83 The "expungeonhangup" flag is used to determine if the voicemail system should
84 expunge all messages marked for deletion when the user hangs up the phone.
85
86 Each mailbox definition should also have imapuser=$<$imap username$>$.
87 For example:
88 \begin{astlisting}
89 \begin{verbatim}
90 4123=>4123,James Rothenberger,jar@onebiztone.com,,attach=yes|imapuser=jar
91 \end{verbatim}
92 \end{astlisting}
93
94 The directives "authuser" and "authpassword" are not needed when using
95 Kerberos. They are defined to allow Asterisk to authenticate as a single
96 user that has access to all mailboxes as an alternative to Kerberos.
97
98
99 \subsection{IMAP Folders}
100
101 Besides INBOX, users should create "Old", "Work", "Family" and "Friends"
102 IMAP folders at the same level of hierarchy as the INBOX.  These will be
103 used as alternate folders for storing voicemail messages to mimic the
104 behavior of the current (file-based) voicemail system.
105
106
107 \subsection{Separate vs. Shared Email Accounts}
108
109 As administrator you will have to decide if you want to send the voicemail
110 messages to a separate IMAP account or use each user's existing IMAP mailbox
111 for voicemail storage.  The IMAP storage mechanism will work either way.
112
113 By implementing a single IMAP mailbox, the user will see voicemail messages
114 appear in the same INBOX as other messages.  The disadvantage of this method
115 is that if the IMAP server does NOT support UIDPLUS, Asterisk voicemail will
116 expunge ALL messages marked for deletion when the user exits the voicemail
117 system, not just the VOICEMAIL messages marked for deletion.
118
119 By implementing separate IMAP mailboxes for voicemail and email, voicemail
120 expunges will not remove regular email flagged for deletion.
121
122
123 \subsection{IMAP Server Implementations}
124
125 There are various IMAP server implementations, each supports a potentially
126 different set of features.
127
128
129 \subsubsection{UW IMAP-2005 or earlier}
130
131 UIDPLUS is currently NOT supported on these versions of UW-IMAP.  Please note
132 that without UID\_EXPUNGE, Asterisk voicemail will expunge ALL messages marked
133 for deletion when a user exits the voicemail system (hangs up the phone).
134
135 \subsubsection{UW IMAP-2006 Development Branch}
136
137 This version supports UIDPLUS, which allows UID\_EXPUNGE capabilities.  This
138 feature allow the system to expunge ONLY pertinent messages, instead of the
139 default behavior, which is to expunge ALL messages marked for deletion when
140 EXPUNGE is called.  The IMAP storage mechanism is this version of Asterisk
141 will check if the UID\_EXPUNGE feature is supported by the server, and use it
142 if possible.
143
144 \subsubsection{Cyrus IMAP}
145
146 Cyrus IMAP server v2.3.3 has been tested using a hierarchy delimiter of '/'.
147
148
149 \subsection{Quota Support}
150
151 If the IMAP server supports quotas, Asterisk will check the quota when
152 accessing voicemail.  Currently only a warning is given to the user that
153 their quota is exceeded.
154
155
156 \subsection{Application Notes}
157
158 Since the primary storage mechanism is IMAP, all message information that
159 was previously stored in an associated text file, AND the recording itself,
160 is now stored in a single email message.  This means that the .gsm recording
161 will ALWAYS be attached to the message (along with the user's preference of
162 recording format if different - ie. .WAV).  The voicemail message information
163 is stored in the email message headers.  These headers include:
164
165 \begin{verbatim}
166 X-Asterisk-VM-Message-Num
167 X-Asterisk-VM-Server-Name
168 X-Asterisk-VM-Context
169 X-Asterisk-VM-Extension
170 X-Asterisk-VM-Priority
171 X-Asterisk-VM-Caller-channel
172 X-Asterisk-VM-Caller-ID-Num
173 X-Asterisk-VM-Caller-ID-Name
174 X-Asterisk-VM-Duration
175 X-Asterisk-VM-Category
176 X-Asterisk-VM-Orig-date
177 X-Asterisk-VM-Orig-time
178 \end{verbatim}