summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorSimeon Simeonov2018-04-11 13:08:36 +0200
committerSimeon Simeonov2018-04-11 13:08:36 +0200
commit2ad972828926e8e3ed2d66e89efa6375944f9bd0 (patch)
treebea2dc3e45b265af69c2d3235e4dce4974e1a02f /README
parent6c86fc92d3f4f28ce245e47027a7a44ac1be3f55 (diff)
Reastructure the documentation in order to please GitHub
Diffstat (limited to 'README')
-rw-r--r--README508
1 files changed, 0 insertions, 508 deletions
diff --git a/README b/README
deleted file mode 100644
index 9dcc6de..0000000
--- a/README
+++ /dev/null
@@ -1,508 +0,0 @@
1 Sylpheed - lightweight and user-friendly e-mail client
2
3 Copyright(C) 1999-2018 Hiroyuki Yamamoto <hiro-y@kcn.ne.jp>
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2, or (at your option)
8 any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software Foundation,
17 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19 For more details see the file COPYING.
20
21
22What's Sylpheed
23===============
24
25Sylpheed is an e-mail client based on GTK+ GUI toolkit.
26Sylpheed runs on Unix-like systems such as Linux, BSD and Mac OS X, or
27Microsoft Windows (XP or later).
28
29Sylpheed is a free software distributed under the GNU GPL (the library part
30LibSylph is GNU LGPL).
31
32Sylpheed has the following features:
33
34 * Simple, beautiful, and well-polished user interface
35 * Comfortable operationality which is built in detail
36 * Well-organized, easy-to-understand configuration
37 * Lightweight operation
38 * High reliability
39 * Internationalization and Multilingualization support
40 * High-level Japanese processing
41 * Various protocols support
42 * Multi-thread support
43 * Security feature (GnuPG, SSL/TLSv1)
44 * Powerful filtering and search
45 * Junk mail control
46 * Flexible cooperation with external commands
47 * Plug-in faculty
48
49The appearance and interface are similar to some popular e-mail clients for
50Windows, such as Outlook or Becky!. Many commands are accessible with
51the keyboard like the Emacs-based mailers such as Mew and Wanderlust.
52So you will be able to migrate to Sylpheed without much discomfort, even if
53you are accustomed to other mailers.
54
55The messages are managed by MH format, and you will be able to use it together
56with another mailer based on MH format (like Mew). It has less possibility
57of losing mails on failures since one file corresponds to one mail. You can
58import or export mbox and eml format messages. You can also utilize fetchmail
59and/or procmail, and external programs on receiving (like inc or imget).
60
61Currently implemented major features
62====================================
63
64Supported protocols
65
66 o POP3
67 o IMAP4rev1
68 o SMTP
69 o NNTP
70 o SSL/TLSv1 (POP3, SMTP, IMAP4rev1, NNTP)
71 o IPv6
72 o SOCKS4/5
73
74Features
75
76 o multiple accounts
77 o powerful filtering (POP3, IMAP4, local spool)
78 o powerful search (query search, quick search, search folder)
79 o Junk mail control
80 o plug-in faculty
81 o thread display
82 o display and transfer of attachments by MIME
83 o inline image display
84 o News reader
85 o SMTP AUTH support (PLAIN / LOGIN / CRAM-MD5)
86 o CRAM-MD5 authentication (SMTP AUTH / IMAP4rev1)
87 o APOP authentication (POP3)
88 o PGP signature / encryption (requires GPGME)
89 o spell checking (requires GtkSpell)
90 o SOCKS4/5 proxy support
91 o X-Face display
92 o user-defined headers
93 o mark / color label
94 o Mew/Wanderlust compatible key bind
95 o multiple MH folder support
96 o mbox and eml import / export
97 o action function to work with external commands
98 o external editor
99 o message queueing
100 o automatic mail checking
101 o draft message
102 o template
103 o line-wrapping
104 o autosave
105 o clickable URI
106 o address book
107 o newly arrived and unread message management
108 o printing
109 o POP3 remote mailbox
110 o offline mode
111 o tray icon (minimize to tray icon, new mail notification)
112 o customization of toolbar
113 o remote operation by command line
114 o per-folder configuration
115 o LDAP, vCard, and JPilot support in address book
116 o CSV, LDIF file import in address book
117 o auto-registration of recipient's addresses to address book
118 o auto-completion of addresses
119 o Drag & Drop
120 o autoconf, automake support
121 o internationalization of messages by gettext
122 o m17n (multilingualization) support
123
124and more.
125
126Installation
127============
128
129See INSTALL for installation instructions.
130
131Usage
132=====
133
134Preparation before running
135--------------------------
136
137If you are using a character encoding other than UTF-8 for filename,
138you must set the following environmental variable (it will not work if
139it is not specified):
140
141(use locale-specific encoding)
142% export G_FILENAME_ENCODING=@locale
143
144or
145
146(manually specifying encoding)
147% export G_FILENAME_ENCODING=ISO-8859-1
148
149If you want to display messages translated to your language,
150you must specify some environmental variables related to locale.
151For example:
152
153% export LANG=de_DE.UTF-8
154
155(replace de_DE.UTF-8 to the actual locale name)
156
157If you don't want translated messages, set LC_MESSAGES to "C"
158(and unset LC_ALL if specified).
159
160How to run
161----------
162
163Input `sylpheed' on a command line, or double-click the icon in a file
164manager to execute.
165
166Initial startup
167---------------
168
169When Sylpheed is executed for the first time, it automatically creates the
170configuration files under ~/.sylpheed-2.0/, and asks you the location of
171mailbox. The default is ~/Mail. If some files, which are non-MH format,
172already exist on the directory, you will have to specify another location.
173
174If ~/.sylpheed-2.0/ doesn't exist, but the previous version of configuration
175exists in ~/.sylpheed/, migration will be made automatically after the
176confirmation.
177
178If the locale encoding is not UTF-8 and the environmental variable
179G_FILENAME_ENCODING is not set, an alert dialog will be displayed.
180
181Required settings
182-----------------
183
184Initially, you have to create at least one account to send or receive
185messages (you can read messages that already exist without creating
186accounts). The configuration dialog will be shown by clicking
187"Configuration -> Create new account..." in the menu, or "Account" on
188the toolbar. Then, fill the required settings.
189
190Refer to the manual supplied with this program for the general usage.
191
192Hidden settings
193---------------
194
195You can configure most of the features in Sylpheed through the preferences
196dialog, but there are a few parameters which don't have user interface
197(you don't need to modify them in normal use). You must edit
198~/.sylpheed-2.0/sylpheedrc by an editor while Sylpheed is not running.
199
200allow_jisx0201_kana allow JIS X 0201 Kana (half-width kana) on
201 sending
202 0: off 1: on [default: 0]
203translate_header translate headers such as 'From:', 'To:' and
204 'Subject:'
205 0: off 1: on [default: 1]
206enable_rules_hint enable alternating row colors for summary view
207 0: off 1: on [default: 1]
208bold_unread show unread messages using bold font in
209 summary view
210 0: off 1: on [default: 1]
211textview_cursor_visible show cursor in the text view
212 0: off 1: on [default: 0]
213mime_image_viewer specify the command to open attached image
214 files [default: none]
215mime_audio_player specify the command to open attached audio
216 files [default: none]
217mime_command specify the command to open MIME attachments
218 [default: none]
219logwindow_line_limit specify the limit of line numbers of log
220 window
221 0: unlimited n (> 0): n lines [default: 1000]
222mark_as_read_on_new_window only mark messages as read when they are
223 opened with new window
224 0: off 1: on [default: 0]
225
226Unlike 1.0.x, this version doesn't allow direct modification of the menu
227shortcuts by default. You can use the following methods to configure them:
228
2291. Using GNOME 2.8 or later
230 Run gconf-editor from 'Applications - System Tools - Configuration Editor'.
231 Select 'desktop - gnome - interface' and check 'can-change-accels' in it.
232
2332. Using GNOME before 2.8, or other environments
234 Add gtk-can-change-accels = 1 to the file ~/.gtkrc-2.0 (or create a new
235 one, if it doesn't exist).
236
2373. When Sylpheed is not running, directly edit ~/.sylpheed-2.0/menurc with
238 an editor.
239
240Information
241===========
242
243You can check the newest version and information about Sylpheed at:
244
245 http://sylpheed.sraoss.jp/
246
247You can also download files from the SourceForce.JP project page:
248
249 http://sourceforge.jp/projects/sylpheed/
250
251The bug tracking system of Sylpheed is:
252
253 http://sylpheed.sraoss.jp/redmine/projects/sylpheed
254
255The Sylpheed documentation in English and several other languages can be
256obtained from:
257
258 http://sylpheeddoc.sourceforge.net/
259
260Feedback
261========
262
263Comments, ideas and (most of all) bug reports (and especially patches) are
264very welcome.
265
266Subversion
267==========
268
269You can get the newest source code from the Subversion repository.
270
271Move to an appropriate directory, and with the command:
272
273 svn checkout svn://sylpheed.sraoss.jp/sylpheed/trunk
274
275a source tree named 'trunk' is created under the current directory.
276
277The subdirectory of sylpheed is divided as following:
278
279 * trunk/ Main tree
280 * branches/ Miscellaneous experimental branches
281 * tags/ Release-tagged branches
282
283To update to the newest source tree, run the command:
284
285 svn update
286
287at the target directory.
288
289--
290Hiroyuki Yamamoto <hiro-y@kcn.ne.jp>
291
292
293Master password (by sgs)
294========================
295
296The master password feature is developed by
297Simeon Simeonov (sgs - sgs@pichove.org) and is currently in an experimental
298state.
299
300
301Motivation
302----------
303
304Currently Sylpheed is storing passwords in palin-text. One can always refrain
305from storing passwords and let Sylpheed prompt for them, but the more accounts
306one has, the more annoying this becomes.
307
308The goal is to have the passwords stored in a secure way and let Sylpheed only
309prompt for the master password.
310
311
312Security goals
313--------------
314
315- attacker (A) should not be able to derive the password from the digest
316
317- A should not be able to derive the master password even if she has
318 read and write access to the storage
319
320- A should not be able to determine the length of the encrypted password
321 even if she has read and write access to the storage
322
323- A should not be able to craft an edited password without obtaining the
324 master password
325
326- a warning / prompt should be given if a user accidently types in a "wrong"
327 master password before decryption is initiated
328
329
330Usage in Sylpheed
331-----------------
332
333- backup your Sylpheed profile (often $HOME/.sylpheed-2.0)!
334
335- start Sylpheed and open Configuration -> Common preferences...!
336
337- select the "Master password" tab, enable "Use master password" and
338 apply the changes!
339
340- restart Sylpheed (exit and then start Sylpheed again)!
341
342- you will be asked to type and verify a new master password.
343
344Note:
345Sylpheed will automatically convert existing stored passwords, but it will not
346touch your backups. You will have to remove all remnants of plain-text
347passwords manually.
348
349
350Choice of cryptographic primitives
351----------------------------------
352
353The primary concern when selecting cryptographic primitives was portability.
354The desire was to go for primitives that are both strong and available in all
355supported production distributions of OpenSSL and LibreSSL.
356
357
358Cipher
359......
360
361When it comes to implementation, there are several advantages in using stream
362cipher or a block cipher that behaves like a stream cipher when used in a
363certain mode of operation. One is avoiding to deal with padding.
364
365AES-256 operating in CFB was selected for these reasons.
366ChaCha20 should be considered as a replacement in the future.
367
368
369Hash-function
370.............
371
372Hash-functions are used for:
373- key derivation
374- plain-text digest
375
376Those operations do not have to use the same hash-function.
377(See the "Encryption & decryption scheme" section for more details!)
378
379Key-derivation:
380Since AES-256 uses a 256 bits key, we need a hash-function with at least
381the same digest size or bigger.
382Since the digest (which is the key itself) is considered confidential and is
383stored only in memory for only a limited amount of time, SHA-256 is considered
384sufficiently strong for that purpose.
385
386Size + plain-text + padding digest:
387Since the digest is created of both the plain-text and the plain-text size,
388as well as being encrypted, SHA-256 is considered sufficiently strong.
389SHA-512 may increase security at the price of adding additional 32 bytes
390to the encrypted password digest.
391
392Stronger hash-functions like SHA-3 or BLAKE2b can be considered as a
393replacement in the future.
394
395
396Master password digest
397......................
398
399In order to be able to decide whether the user typed a "wrong" master password,
400before attempting to decrypt, Sylpheed stores a digest of the master password
401in 'master_password_hash' in sylpheedrc.
402100000 iterations of PBKDF2_HMAC with SHA-512 and 16 bytes salt is used.
403Note that this digest is useless as a key and even if a plain-text that
404produces the same digest is found, it will most probably be useless as a
405master-password.
406
407
408Encryption & decryption scheme
409------------------------------
410
411
412Encryption
413..........
414
415
416Input:
417
418- palin-text password to be encrypted (P)
419
420- plain-text master-password used for key derivation (M)
421
422- integer minimum password length (0 < L < 100)
423
424
425Output:
426
427- an encrypted password digest (base64) (B)
428
429
430Operation:
431
432- generate 16 bytes of random data to be used as a salt (S)
433
434- derive the key (K): K = SHA_256(S + M)
435
436- produce a 2 byte string (N) indicating the length of P
437
438- if the length of P < L, produce L - P bytes of random data (R), N = "%02d"
439 if the length of P >= L, N = "-1"
440
441- produce a hash digest (H): H = SHA_256(N + P + R (if the length of P < L))
442
443- encrypt (E): E = AES_256_CFB_ENCRYPT(H + N + P + R (if the length of P < L), K)
444
445- B = mpes1:BASE64_ENCODE(S + E)
446 example:
447 mpes1:vo7lsIpD7i6byBA6+vlUoF4OVDfEe+aYRRk4FRtfJ2gMY8M43Kj6WfdfgbViIOl83bI4XEc96okhPW5Mla813aAR1gbPjDg0xmCyIbWOiUv/dg==
448
449
450Decryption
451..........
452
453
454Input:
455
456- encrypted password digest (base64) (B)
457
458- plain-text master-password used for key derivation (M)
459
460
461Output:
462
463- palin-text password (P)
464
465
466Operation:
467
468- remove the prefix (mpes1:) and base64-decode the rest of the digest: B = BASE64_DECODE(B)
469
470- fetch the first 16 bytes for the salt: S = B[0 : 15]
471
472- derive the key (K): K = SHA_256(S + M)
473
474- decrypt the rest of B (D): D = AES_256_CFB_DECRYPT(B[16 :], K)
475
476- extract the first 16 bytes for the hash digest (H): H = D[0 : 15]
477
478- in order to detect data-inconsistency, assert H == SHA_256(D[16 :])
479
480- extract the next 2 bytes for the length of P (N): N = D[16 : 17]
481
482- if N == "-1" the password is the remaining bytes of D: P = D[18 :]
483 if N != "-1", extract the next N-bytes from D: P = D[18 : (18 + N)]
484
485
486Limitations
487-----------
488
489- when Sylpheed starts, the master-password is loaded into memory and remains
490 there as long as Sylpheed is running. Currently no strong mechanisms,
491 preventing someone with access to the memory from snatching it,
492 are implemented.
493 "Unloading" the master-password immediately after
494 account-processing (decryption) should be considered in the future.
495
496- currently only the 'password' and 'smtp_password' keys in accountrc
497 are encrypted.
498 A machanism that allows for any key and even folders to be encrypted
499 should be considered in the future.
500
501- currently it is not possible to select alternative ciphers, hash-functions
502 and modes of operation (without editing the source code).
503
504- currently it is not possible to change your master password without having to
505 set your passwords manually.
506
507--
508Simeon Simeonov <sgs [ATTT] pichove (DOT) org>