Version 12 of tkbiff

Updated 2006-09-01 20:44:11

http://expect.nist.gov/tkbiff/

tkbiff is a mail notification program. Besides doing what it is supposed to, tkbiff is also a nice example of a polished Tcl/Tk application. It's wonderfully configurable, well documented, and also serves as a Rosetta Stone for IMAP, POP, and file-based mail servers. Tkbiff is also portable to all of UNIX, Win, and MacOS and there's a fair amount of code to make that happen just right. (The Tcl language is portable but that doesn't mean that all programs are trivially portable!)


LES: Eh, looks good. But what a totally blunt approach. It created a .tkbiff file in my home folder, but it's not just configuration. It's the entire program! Someday I'll get around to reading all that and making it work. :-(


DL: I'm not sure 'blunt' is the right word to describe it but it certainly doesn't follow the traditional approach of making everything a pre-defined Preference. Instead, the entire GUI is there in your .tkbiff file! This reason for taking this approach is explained in Q1 of the FAQ: http://expect.nist.gov/tkbiff/FAQ.html#q1

While deciding if you agree, I ask you to think about your present email checker and ask yourself - Is there anything about it you'd like it would do differently but are unable to because there is no Preference to change it?


jima (2006-08-24): How about connecting to gmail from tkbiff?

Does anyone know if that is possible? (I am trying but not getting it to work).

RLH Is POP access enabled for your gmail account?

jima Yes it is, I checked it by using Outlook on it. I am getting help from DL, perhaps I am not setting the configuration properly.

DL It's either a bug in tls (I'm using 1.5.0) or my understanding of how to use it! I'll demonstrate:

Try entering the following 3 lines into tkcon:

 % package require tls
 % proc w {f} {fconfigure $f -blocking 0;fileevent $f readable {set ::event 0};vwait ::event}
 % set f [tls::socket -async pop.gmail.com 995]; w $f; puts [read $f]

All that code does is to open a secure connection to pop.gmail.com. But it hangs waiting for an event. Forever.

If I run the same code (without the tls stuff) to a non-ssl pop server, it works fine. I see the pop greeting immediately. (I don't know of any public non-secure pop hosts; you'll have to substitute your own in the code below.)

 % proc w {f} {fconfigure $f -blocking 0;fileevent $f readable {set ::event 0};vwait ::event}
 % set f [socket -async pop.localhost.com 110]; w $f; puts [read $f]

If I open a connection to gmail WITHOUT the fileevent/vwait, it works (although it takes about a minute to complete the read):

 % package require tls
 % set f [tls::socket -async pop.gmail.com 995]
 % read $f

And if I point it at my company's secure pop server, it hangs!

I'm thoroughly confused but it sure looks like a tls issue.


Category Application