Use a proxy server if supplied on the command line. (done)
Important: I don't really have a good authentication
routine. I.e. I don't store username and passwords for POP3. Since
freeyouremail is a daemon run as root, I authenticate via /etc/passwd ...
which is a BIG security hole since POP3 passwords are CLEAR text. Maybe we
could store the username+password in the ~/.appauth (see Readme). That would
be more friendly to a WIN32 implementation too; which doesn't have home
directories. Note: if we stop using /etc/passwd, then using MD5 and
APOP would be possible.
Update: Username and Password are stored in user
owned files! Users other than root should not be able to read your
email address, username, and/or password. MD5 and/or APOP should still be
Copy freeyouremail.pl to socket_loop.pm and 'use' it in the clients and
daemons. Change "main::XYZ" constants to "XYZ" and import them from
Use a standard documentation creator (like doxygen, cppdoc, perldoc,
perldoc2html, new in-house parser?).
Enhance the dead.letter module to save/restore emails upon fatal errors and
shutdowns. If anything else happens (the power is lost), what more can we
do? Update: document the importance of shutdown to prevent
Abstract daemons (make it easier to create a new one). (done)
Abstract clients (make it easier to create a new one). (partially done;
still need a webemail_agent style module)
'qr//' the regular expressions in an extra configuration module. Maybe an
array of regular expressions based on the actual HTML returned. That way if
Yahoo!Mail or GroupWise changes/rotates their HTML we would still function based
on regular expressions. We could also push out an update quicker to match
changing HTML. Note: create a link in the HTTP daemon or create a 'REGEX'
client to check for update(s) and download this module and even automatically
restart Free Your Email.
Create a linux init script. (partially done via 'suse-init.freeyouremail')
Clean up GroupWise, Yahoo!Mail, Yahoo!Weather clients. That is, make them
readable (add more comments), stable (remove 'die's), and robust (allow for
different user environments).
Update: A lot of die(s) have been
removed in favor of the dead_letter module. I have been able to use
freeyouremail for weeks w/o restart or email loss. YMMV.
Implement a client for stock quotes (nice to have) and possibly provide
Make the HTTP interface functional : configure running clients and daemons,
give a [start] and [stop] button to configure begintime and endtime of
clients, show statistics, and make it secure (maybe password protect per
client/daemon, user, root, etc...). Make the functional aspect work per user
(don't let one user click [stop] for everyone). Remove passwords and other
Filter out Yahoo!Mail and other "signature ads" from the tail end of emails
(including forwarded emails). (nice to have)
Add some "hot" new service/functionality not offered in other projects. What
would that be? Stock Quotes? Appointment/Calendar monitoring? Ideas are
Add more clients (hotmail, front.ru, mail.ru, ISP accounts).
(Update: hotmail, front.ru, and mail.ru = done; ISP
= no value added?)
Run under WIN32 (run w/o root, home directories, etc...) Maybe put the
dead.letter right on the desktop where it can be found? Where do we put
.appauth (do we eliminate it)? Put config files in "Documents and Settings"?
or "Profiles"? Maybe have an installer make the choices and save some
registry settings (or ini file?). Run an installer and let it make the
directory decisions or ask for them (doesnt FSF/GNU have a free native
Simplify command line options via init script and/or rc style config file.
(partially done via 'suse-init.freeyouremail')
Try to compile xfaces under Cygwin for WIN32 users.
Only FATAL dies can be left in a "release" and only if a dead.letter
notification is provided. The dead.letter noitification should tell the user
how to get into contact with us (shouldn't it?). (partially done; see above)
I use DSL, so I don't know how dail up would react to a disconnect/internet
unavailable situation, test and possibly fix. (partially done; many restarts
and few errors during week long runs)
Also since I use DSL, I have not yet coded a retry for sending emails.