TMail question / ?error?


Hi I am trying to write a Ruby program to test our antispam filter. So
the first
part of my strategy is to take a bunch of spam and a bunch of notspam
which I’ve sorted into two mozilla-thunderbird mbox files and pump them
into the

However, I may be getting stuck with Ruby syntax. The following code
works properly:

require ‘tmail’
@loader =‘spamfile’)
@loader.each_port do |port|
do something with the mail

However the following fails:

ro@atlas:/tmp$ irb
irb(main):001:0> require ‘tmail’
=> true
irb(main):002:0> @loader =‘spamfile’)
=> #<TMail::UNIXMbox:0xb7aceb40 @readonly=false, @filename=“spamfile”,
@closed=false, @real=#<TMail::MhMailbox
irb(main):003:0> port = @loader.new_port
=> #<TMail::MhPort /tmp/ruby_tmail_8378_0.860064296748723/1>
irb(main):004:0> mail =
Errno::ENOENT: No such file or directory -
initialize' from /usr/local/stow/ruby-1.8.4/lib/ruby/site_ruby/1.8/tmail/port.rb:62:inropen’
from (irb):4

I noticed that when the @loader.each_port do loop starts it creates a
directory full of files
in /tmp, and each appears to be a file containing a single message from
my mbox file,
but @loader.new_port does not do this. Is new_port not working
properly? (I’m looking
at mailbox.rb, but I’m not sure that I understand what’s going on)

The reason I want to do things this way is because I want to create
wrapper classes
SpamSource and NotSpamSource so I can send a controlled percentage of
spam to our gateway.
I’d like to be able to do:

if (a<spamPercentage)
message = mySpamSource.getMessage
message = myNotSpamSource.getMessage
dosomething with message

Am I doing something wrong?



“R” == Rohit M. removed_email_address@domain.invalid writes:

R> but @loader.new_port does not do this. Is new_port not working
R> properly? (I’m looking

Well #new_port returns a new TMail::Port, which must be used with
or #aopen to create a new message, no ?

Guy Decoux


Ahh, “new_port” does not do what I imagined it did.
I am really looking for a “next_port” method. Perhaps the easiest
thing to do would be to use “each_port” to extract the MBox file into
a separate file and then work with the files.