forked from netfarm/archiver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
89 lines (87 loc) · 4.69 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
BUGS
- emails with non 7bit headers are trashed (it should be ok since, they aren't rfc compliant)
- unix sockets and asyncore are not friends, you should only use only tcp sockets
- thread interlock stuff sometime doesn't work, i.e. if lock check is enabled
archiver will not shutdown in a clean way
TODO 2.x:
- [done] Split out history and readme from archver.py and make different files
- [done] Split the server to two threads 1st and 2nd stage using different unix sockets
- [done] Use lmtp on listening unix sockets
- [done] Modularize Data and Storage Backends
- [done] Call init/shutdown for each backend
- [done] Check duplicate headers - check
clamav sends mails with multiple cc
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=213509&mbox=yes
- [done unix socket/asyncore is buggy] Use lmtp or smtp for listening services (integrates with amavisd-new)
- [done] Multiple from support
- [done] Rework configurations system - use ConfigParses
- [done] Implement backends
- [done] Make a class object for logger
- [done] Move common backend exceptions class in archiver.py and import
- [done] SQL tables are in dir sql/ - postfix confs are in dir postfix/
- [done] Add error handling and auto-reconnection to backend rdbms
- [done] Add 'Archived as' as 200 result code
- [done] lmtp.py LMTP_PORT not defined
- [done] use_poll and granularity in config
- [done] Added nowait to global for debugging locks
- [done] Hash to avoid duplicate process (e.g. failed to connect output server)
- [done] Address check should be now rfc compliant
- [done] Make separate hashdb for each backend
- [done] Add support for @mail.domain1.com:email@domain2.com
- [done] Unix sockets permissions are 0777
- [done] Fix rfc821 syntax (a@host, b: etc + <+Mailbox>)
- [done] Remove all variables named "type" to avoid shadow of type()
- [done] Code/log cleanup, checked with pychecker, lmtp has some harmless warning
- [done] Make daemon - switch user - getopt cmdline args
- [done] Why shutdown is so slow? default granularity is 10, it should be ok
- [done] Null return path mails should be in whitelist
- [done] Add an E_TRACE with connections
- [done] Fix loglevel/debuglevel in lmtp.py
- [done] Remove the archiver id header of whitelist mails or storage backend will process it
- [done sometime buggy] Fix thread locking stuff - hooked accept and channel _del_ method
- [done] Add a prefix to logs
- [done] Doxygen-ize: all methods are documented, still needed additional docs
- [checked] sendmail method need extensive checks
- [done] Win32 port with ntservice support
- [done] py2exe wrapper
- [done] nsis installer for win32
- [partially done] check if unmimified stuff can be inserted in the rdbms (check/convert char encoding?)
- [done] extract sender if no from is in header, extract to from recipents if not to is in header
- [done] datefromemail controls the date field, set it to 1 to use date extraction from email
- [done] timeout option is honored if using python2.3 or greater
- [done] explicit depends on python >= 2.3 for socket timeout, True/False
and bug in rfc822 address parsing of python2.1
- [done] use chdir('/') on daemonize
- [done] added message-id as additional processed data
- [done] removed doxygen stuff
- [done] Update rdbms driver to psycopg2
- [done] mblookup looks for shared folders & co.
- [done] implement timed reload of quota hash depending on modified timestamp
to avoid reloading each check
- [done] complete backend_pgsql and use new sql for mail
- [done] customizable subject pattern whitelist
- [done] annonce DSN support and passthrough
- [done] sendmail code is rewritten, it returns ok and logs a warn if the nexthop refuses
some of recipients
- [done] wontfix - why poll() keeps objects in list then calls handle_excpt???
- [done] no more warnings in del_hook
- Modify init script to take params from /etc/defaults also permission checks for logfile etc
- Make debian package
- Make README.txt
- Unmimify attachment filenames?
- Unmimify email addresses?
- Add an info about unix socket + asyncore problem
- Update postfix templates
- Update structure.txt: stage to stage passthrough - maybe usefull on win32
- Convert some fields in lowercase before archiving?
- Fix: Error parsing to/cc: Undisclosed-Recipient
- Check init script if the archiver is already launched, pidfile is overwritten/removed ??
- make compression ratio check in various compressors
- check backend_xmlrpc, new version is totally untested
- remove sql storage backend?
- uniform backend error messages
- remove duplicate code in backend_filesystem and backed_vfsimage
- option to skip spam tagged mail
- remove removables globals
- new_mid() is fake, I use it only for testing direct connection
- if no headers the X-Archiver-ID becomes body