diff options
Diffstat (limited to 'README')
| -rw-r--r-- | README | 508 |
1 files changed, 0 insertions, 508 deletions
| @@ -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 | |||
| 22 | What's Sylpheed | ||
| 23 | =============== | ||
| 24 | |||
| 25 | Sylpheed is an e-mail client based on GTK+ GUI toolkit. | ||
| 26 | Sylpheed runs on Unix-like systems such as Linux, BSD and Mac OS X, or | ||
| 27 | Microsoft Windows (XP or later). | ||
| 28 | |||
| 29 | Sylpheed is a free software distributed under the GNU GPL (the library part | ||
| 30 | LibSylph is GNU LGPL). | ||
| 31 | |||
| 32 | Sylpheed 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 | |||
| 49 | The appearance and interface are similar to some popular e-mail clients for | ||
| 50 | Windows, such as Outlook or Becky!. Many commands are accessible with | ||
| 51 | the keyboard like the Emacs-based mailers such as Mew and Wanderlust. | ||
| 52 | So you will be able to migrate to Sylpheed without much discomfort, even if | ||
| 53 | you are accustomed to other mailers. | ||
| 54 | |||
| 55 | The messages are managed by MH format, and you will be able to use it together | ||
| 56 | with another mailer based on MH format (like Mew). It has less possibility | ||
| 57 | of losing mails on failures since one file corresponds to one mail. You can | ||
| 58 | import or export mbox and eml format messages. You can also utilize fetchmail | ||
| 59 | and/or procmail, and external programs on receiving (like inc or imget). | ||
| 60 | |||
| 61 | Currently implemented major features | ||
| 62 | ==================================== | ||
| 63 | |||
| 64 | Supported 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 | |||
| 74 | Features | ||
| 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 | |||
| 124 | and more. | ||
| 125 | |||
| 126 | Installation | ||
| 127 | ============ | ||
| 128 | |||
| 129 | See INSTALL for installation instructions. | ||
| 130 | |||
| 131 | Usage | ||
| 132 | ===== | ||
| 133 | |||
| 134 | Preparation before running | ||
| 135 | -------------------------- | ||
| 136 | |||
| 137 | If you are using a character encoding other than UTF-8 for filename, | ||
| 138 | you must set the following environmental variable (it will not work if | ||
| 139 | it is not specified): | ||
| 140 | |||
| 141 | (use locale-specific encoding) | ||
| 142 | % export G_FILENAME_ENCODING=@locale | ||
| 143 | |||
| 144 | or | ||
| 145 | |||
| 146 | (manually specifying encoding) | ||
| 147 | % export G_FILENAME_ENCODING=ISO-8859-1 | ||
| 148 | |||
| 149 | If you want to display messages translated to your language, | ||
| 150 | you must specify some environmental variables related to locale. | ||
| 151 | For example: | ||
| 152 | |||
| 153 | % export LANG=de_DE.UTF-8 | ||
| 154 | |||
| 155 | (replace de_DE.UTF-8 to the actual locale name) | ||
| 156 | |||
| 157 | If you don't want translated messages, set LC_MESSAGES to "C" | ||
| 158 | (and unset LC_ALL if specified). | ||
| 159 | |||
| 160 | How to run | ||
| 161 | ---------- | ||
| 162 | |||
| 163 | Input `sylpheed' on a command line, or double-click the icon in a file | ||
| 164 | manager to execute. | ||
| 165 | |||
| 166 | Initial startup | ||
| 167 | --------------- | ||
| 168 | |||
| 169 | When Sylpheed is executed for the first time, it automatically creates the | ||
| 170 | configuration files under ~/.sylpheed-2.0/, and asks you the location of | ||
| 171 | mailbox. The default is ~/Mail. If some files, which are non-MH format, | ||
| 172 | already exist on the directory, you will have to specify another location. | ||
| 173 | |||
| 174 | If ~/.sylpheed-2.0/ doesn't exist, but the previous version of configuration | ||
| 175 | exists in ~/.sylpheed/, migration will be made automatically after the | ||
| 176 | confirmation. | ||
| 177 | |||
| 178 | If the locale encoding is not UTF-8 and the environmental variable | ||
| 179 | G_FILENAME_ENCODING is not set, an alert dialog will be displayed. | ||
| 180 | |||
| 181 | Required settings | ||
| 182 | ----------------- | ||
| 183 | |||
| 184 | Initially, you have to create at least one account to send or receive | ||
| 185 | messages (you can read messages that already exist without creating | ||
| 186 | accounts). The configuration dialog will be shown by clicking | ||
| 187 | "Configuration -> Create new account..." in the menu, or "Account" on | ||
| 188 | the toolbar. Then, fill the required settings. | ||
| 189 | |||
| 190 | Refer to the manual supplied with this program for the general usage. | ||
| 191 | |||
| 192 | Hidden settings | ||
| 193 | --------------- | ||
| 194 | |||
| 195 | You can configure most of the features in Sylpheed through the preferences | ||
| 196 | dialog, 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 | |||
| 200 | allow_jisx0201_kana allow JIS X 0201 Kana (half-width kana) on | ||
| 201 | sending | ||
| 202 | 0: off 1: on [default: 0] | ||
| 203 | translate_header translate headers such as 'From:', 'To:' and | ||
| 204 | 'Subject:' | ||
| 205 | 0: off 1: on [default: 1] | ||
| 206 | enable_rules_hint enable alternating row colors for summary view | ||
| 207 | 0: off 1: on [default: 1] | ||
| 208 | bold_unread show unread messages using bold font in | ||
| 209 | summary view | ||
| 210 | 0: off 1: on [default: 1] | ||
| 211 | textview_cursor_visible show cursor in the text view | ||
| 212 | 0: off 1: on [default: 0] | ||
| 213 | mime_image_viewer specify the command to open attached image | ||
| 214 | files [default: none] | ||
| 215 | mime_audio_player specify the command to open attached audio | ||
| 216 | files [default: none] | ||
| 217 | mime_command specify the command to open MIME attachments | ||
| 218 | [default: none] | ||
| 219 | logwindow_line_limit specify the limit of line numbers of log | ||
| 220 | window | ||
| 221 | 0: unlimited n (> 0): n lines [default: 1000] | ||
| 222 | mark_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 | |||
| 226 | Unlike 1.0.x, this version doesn't allow direct modification of the menu | ||
| 227 | shortcuts by default. You can use the following methods to configure them: | ||
| 228 | |||
| 229 | 1. 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 | |||
| 233 | 2. 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 | |||
| 237 | 3. When Sylpheed is not running, directly edit ~/.sylpheed-2.0/menurc with | ||
| 238 | an editor. | ||
| 239 | |||
| 240 | Information | ||
| 241 | =========== | ||
| 242 | |||
| 243 | You can check the newest version and information about Sylpheed at: | ||
| 244 | |||
| 245 | http://sylpheed.sraoss.jp/ | ||
| 246 | |||
| 247 | You can also download files from the SourceForce.JP project page: | ||
| 248 | |||
| 249 | http://sourceforge.jp/projects/sylpheed/ | ||
| 250 | |||
| 251 | The bug tracking system of Sylpheed is: | ||
| 252 | |||
| 253 | http://sylpheed.sraoss.jp/redmine/projects/sylpheed | ||
| 254 | |||
| 255 | The Sylpheed documentation in English and several other languages can be | ||
| 256 | obtained from: | ||
| 257 | |||
| 258 | http://sylpheeddoc.sourceforge.net/ | ||
| 259 | |||
| 260 | Feedback | ||
| 261 | ======== | ||
| 262 | |||
| 263 | Comments, ideas and (most of all) bug reports (and especially patches) are | ||
| 264 | very welcome. | ||
| 265 | |||
| 266 | Subversion | ||
| 267 | ========== | ||
| 268 | |||
| 269 | You can get the newest source code from the Subversion repository. | ||
| 270 | |||
| 271 | Move to an appropriate directory, and with the command: | ||
| 272 | |||
| 273 | svn checkout svn://sylpheed.sraoss.jp/sylpheed/trunk | ||
| 274 | |||
| 275 | a source tree named 'trunk' is created under the current directory. | ||
| 276 | |||
| 277 | The subdirectory of sylpheed is divided as following: | ||
| 278 | |||
| 279 | * trunk/ Main tree | ||
| 280 | * branches/ Miscellaneous experimental branches | ||
| 281 | * tags/ Release-tagged branches | ||
| 282 | |||
| 283 | To update to the newest source tree, run the command: | ||
| 284 | |||
| 285 | svn update | ||
| 286 | |||
| 287 | at the target directory. | ||
| 288 | |||
| 289 | -- | ||
| 290 | Hiroyuki Yamamoto <hiro-y@kcn.ne.jp> | ||
| 291 | |||
| 292 | |||
| 293 | Master password (by sgs) | ||
| 294 | ======================== | ||
| 295 | |||
| 296 | The master password feature is developed by | ||
| 297 | Simeon Simeonov (sgs - sgs@pichove.org) and is currently in an experimental | ||
| 298 | state. | ||
| 299 | |||
| 300 | |||
| 301 | Motivation | ||
| 302 | ---------- | ||
| 303 | |||
| 304 | Currently Sylpheed is storing passwords in palin-text. One can always refrain | ||
| 305 | from storing passwords and let Sylpheed prompt for them, but the more accounts | ||
| 306 | one has, the more annoying this becomes. | ||
| 307 | |||
| 308 | The goal is to have the passwords stored in a secure way and let Sylpheed only | ||
| 309 | prompt for the master password. | ||
| 310 | |||
| 311 | |||
| 312 | Security 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 | |||
| 330 | Usage 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 | |||
| 344 | Note: | ||
| 345 | Sylpheed will automatically convert existing stored passwords, but it will not | ||
| 346 | touch your backups. You will have to remove all remnants of plain-text | ||
| 347 | passwords manually. | ||
| 348 | |||
| 349 | |||
| 350 | Choice of cryptographic primitives | ||
| 351 | ---------------------------------- | ||
| 352 | |||
| 353 | The primary concern when selecting cryptographic primitives was portability. | ||
| 354 | The desire was to go for primitives that are both strong and available in all | ||
| 355 | supported production distributions of OpenSSL and LibreSSL. | ||
| 356 | |||
| 357 | |||
| 358 | Cipher | ||
| 359 | ...... | ||
| 360 | |||
| 361 | When it comes to implementation, there are several advantages in using stream | ||
| 362 | cipher or a block cipher that behaves like a stream cipher when used in a | ||
| 363 | certain mode of operation. One is avoiding to deal with padding. | ||
| 364 | |||
| 365 | AES-256 operating in CFB was selected for these reasons. | ||
| 366 | ChaCha20 should be considered as a replacement in the future. | ||
| 367 | |||
| 368 | |||
| 369 | Hash-function | ||
| 370 | ............. | ||
| 371 | |||
| 372 | Hash-functions are used for: | ||
| 373 | - key derivation | ||
| 374 | - plain-text digest | ||
| 375 | |||
| 376 | Those operations do not have to use the same hash-function. | ||
| 377 | (See the "Encryption & decryption scheme" section for more details!) | ||
| 378 | |||
| 379 | Key-derivation: | ||
| 380 | Since AES-256 uses a 256 bits key, we need a hash-function with at least | ||
| 381 | the same digest size or bigger. | ||
| 382 | Since the digest (which is the key itself) is considered confidential and is | ||
| 383 | stored only in memory for only a limited amount of time, SHA-256 is considered | ||
| 384 | sufficiently strong for that purpose. | ||
| 385 | |||
| 386 | Size + plain-text + padding digest: | ||
| 387 | Since the digest is created of both the plain-text and the plain-text size, | ||
| 388 | as well as being encrypted, SHA-256 is considered sufficiently strong. | ||
| 389 | SHA-512 may increase security at the price of adding additional 32 bytes | ||
| 390 | to the encrypted password digest. | ||
| 391 | |||
| 392 | Stronger hash-functions like SHA-3 or BLAKE2b can be considered as a | ||
| 393 | replacement in the future. | ||
| 394 | |||
| 395 | |||
| 396 | Master password digest | ||
| 397 | ...................... | ||
| 398 | |||
| 399 | In order to be able to decide whether the user typed a "wrong" master password, | ||
| 400 | before attempting to decrypt, Sylpheed stores a digest of the master password | ||
| 401 | in 'master_password_hash' in sylpheedrc. | ||
| 402 | 100000 iterations of PBKDF2_HMAC with SHA-512 and 16 bytes salt is used. | ||
| 403 | Note that this digest is useless as a key and even if a plain-text that | ||
| 404 | produces the same digest is found, it will most probably be useless as a | ||
| 405 | master-password. | ||
| 406 | |||
| 407 | |||
| 408 | Encryption & decryption scheme | ||
| 409 | ------------------------------ | ||
| 410 | |||
| 411 | |||
| 412 | Encryption | ||
| 413 | .......... | ||
| 414 | |||
| 415 | |||
| 416 | Input: | ||
| 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 | |||
| 425 | Output: | ||
| 426 | |||
| 427 | - an encrypted password digest (base64) (B) | ||
| 428 | |||
| 429 | |||
| 430 | Operation: | ||
| 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 | |||
| 450 | Decryption | ||
| 451 | .......... | ||
| 452 | |||
| 453 | |||
| 454 | Input: | ||
| 455 | |||
| 456 | - encrypted password digest (base64) (B) | ||
| 457 | |||
| 458 | - plain-text master-password used for key derivation (M) | ||
| 459 | |||
| 460 | |||
| 461 | Output: | ||
| 462 | |||
| 463 | - palin-text password (P) | ||
| 464 | |||
| 465 | |||
| 466 | Operation: | ||
| 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 | |||
| 486 | Limitations | ||
| 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 | -- | ||
| 508 | Simeon Simeonov <sgs [ATTT] pichove (DOT) org> | ||
