mailtools silentmailfetcher class (reused here from uses the python poplib module to fetch mail over sockets the silent class prevents mailtools print call statements from going to the html reply stream (although any exceptions are allowed to propagate there normallyin this versionloadmail loads just the header text portions of all incoming email to generate the selection list page howeverit still reloads headers every time you refetch the selection list page as mentioned earlierthis scheme is better than the prior versionbut it can still be slow if you have lots of email sitting on your server server-side database techniquescombined with scheme for invalidating message lists on deletions and new receiptsmight alleviate some of this bottleneck because the interface exported by loadmail would likely not need to change to introduce caching mechanismclients of this module would likely still work unchanged pop password encryption we discussed pymailcgi' security protocols in the abstract earlier in this herewe look at their concrete implementation pymailcgi passes user and password state information from page to page using hidden form fields and url query parameters embedded in html reply pages we studied these techniques in the prior such data is transmitted as simple text over network sockets--within the html reply stream from the serverand as parameters in the request from the client as suchit is subject to security issues this isn' concern if you are running local web server on your machineas all our examples do the data is being shipped back and forth between two programs running on your computerand it is not accessible to the outside world if you want to install pymailcgi on remote web server machinethoughthis can be an issue because this data is sensitivewe' ideally like some way to hide it in transit and prevent it from being viewed in server logs the policies used to address this have varied across this book' lifespanas options have come and gonethe second edition of this book developed custom encryption module using the standard library' rotor encryption module this module was used to encrypt data inserted into the server' reply streamand then to later decrypt it when it was returned as parameter from the client unfortunatelyin python and laterthe rotor module is no longer available in the standard libraryit was withdrawn due to security concerns this seems somewhat extreme measure (rotor was adequate for simpler applications)but rotor is no longer usable solution in recent releases the third edition of this book extended the model of the secondby adding support for encrypting passwords with the third-party and open source pycrypto system regrettablythis system is available for python but still not for as write these words for the fourth edition in mid- (though some progress on the pymailcgi server