T M D A

  
TMDA Homepage TMDA @ SourceForge      
Overview
Introduction
History
Features
Results & Testimonials
TMDA In Use
 
Usage
Requirements
Download
Installation
Configuration
 
Support
Troubleshooting
FAQ
Bugs & Patches
Mailing Lists
List Archive
External Resources
 
Author
Jason R. Mastaler
 
© 2001-2002
  

TMDA FREQUENTLY ASKED QUESTIONS

  1. How do I setup a whitelist?
  2. Will TMDA run on non-unix clients such as Microsoft Windows?
  3. Does TMDA have a web interface?
  4. How do I setup TMDA with vpopmail?
  5. How can I delete old, unconfirmed messages from TMDA's pending queue?
  6. How do I allow my ezmlm mailing lists to pass through TMDA?
  7. How can I prevent BBDB from asking about 'dated' addresses?
  8. Why don't my user+detail addresses work with Sendmail virtualdomains?
  9. Why don't my user+detail addresses work with Sendmail /etc/aliases?
  10. Is TMDA planning to support Microsoft Exchange Server?
  11. Can't spammers just setup an auto-responder to defeat TMDA?
  12. Why isn't TMDA written in Perl, C, C++, Java, etc..?

  • How do I setup a whitelist? I'd like any address in my domain (domain.dom) to be able to send me mail without worrying about confirmations.

    You can allow senders, or groups of senders directly into your mailbox by adding lines to your incoming filter file. By default this is ~/.tmda/filters/incoming.

    For example, the following line will allow both anyone@domain.dom, and anyone@sub.domain.dom into your mailbox:
    from *@=domain.dom ok
    
    If you have many individual addresses and/or expressions you'd like to whitelist, you may keep them in a seperate file and then have TMDA access it using the following line:
    from-file ~/.tmda/lists/whitelist ok
    
    ~/.tmda/lists/whitelist would contain e-mail addresses and/or wildcard expressions, one per line. e.g,
    king@grassland.com
    *@myisp.net
    *@cs.myuni.edu
    *@=mycompany.com
    bobby*@peru.com
    
    See the TMDA Filter Specification for details on filter file syntax, options, and more examples.

    NOTE: For incoming mail, tmda-filter compares the address in the Envelope-Sender, the "From:" header and the "Reply-To:" header when looking for a match.
  • Will TMDA run on non-unix clients such as Microsoft Windows?

    You do have a couple of options under Windows on the client side of TMDA.

    You can configure a qmail relay to re-write the address of outgoing messages with tmda-inject, so that those running Microsoft Windows clients can take full advantage of TMDA. See `README.RELAY' in the contrib/ directory or one user's configuration details for a site-wide TMDA install using smtpd-auth, vpopmail and qmailadmin.

    TMDA also works perfectly under cygwin with the sSMTP sendmail emulation program (which comes with cygwin). Just add the following line your tmdarc:
    SENDMAIL = "/usr/sbin/ssmtp.exe"
    
    You'll then be able to tag your outgoing mail with cygwin-compatible MUAs (mutt, XEmacs, etc.) just as under UNIX.
  • Does TMDA have a web interface?

    Yes. QAdmin-TMDA is a TMDA configuration and administration tool which integrates into the QmailAdmin web managment system. For more information on QAdmin-TMDA's capabilities, see its original announcement.
  • How do I setup TMDA with vpopmail?

    See Lou Hevly's TMDA/vpopmail tutorial
  • How can I delete old, unconfirmed messages from TMDA's pending queue?

    TMDA comes with a utility called `tmda-clean' which does this for you. You can run it by hand, or periodically from cron. Run `tmda-clean' without any arguments to get a listing of possible options. tmda-clean should be run from the user account that owns the pending queue, not from root (unless root is running TMDA).

    For example, to purge unconfirmed messages older than 14 days each morning at 2AM, add the following crontab entry:
    0 02 * * * /path/to/tmda/bin/tmda-clean 14d

  • How do I allow my ezmlm mailing lists to pass through TMDA? Each list message is sent out with a different envelope sender address.

    You can whitelist the ezmlm list using wildcard characters. Here is an example whitelist entry for the qmail mailing list:
    qmail-return-*@list.cr.yp.to
    This will allow messages to get through when initially interacting with ezmlm to get subscribed, as well as after when list messages are delivered.
  • I use BBDB, and every time it sees a new 'dated' address it asks me whether I want it added to so-and-so's BBDB record. How can I prevent this?

    You can either set bbdb-always-add-addresses to 'never, or use a BBDB hook to filter the addresses before adding them to the database.
  • I'm running Sendmail, and noticed that my user+detail addresses don't work if the message is sent to a virtual domain. What's the problem?

    You need some special entries in the virtusertable (and a modern version of sendmail - at least 8.10.1 to get full functionality) to preserve the +detail portion of the address. For example, if you currently have the following in your virtusertable:
    bobby@peru.com    bobby
    
    you can change this to:
    bobby+*@peru.com  bobby+%2
    
    See the virtusertable section in your Sendmail's cf/README for the full details.
  • I'm running Sendmail, and noticed that my user+detail addresses don't work if the message is sent to a one of my aliases. What's the problem?

    If you have the following in /etc/aliases:
    webmaster: johndoe
    
    +detail is preserved for mail to johndoe+detail, but not for webmaster+detail.

    Unfortunately, there is no way to preserve the +detail portion in /etc/aliases. You must use the virtusertable for this (see previous question).
  • Is TMDA planning to support Microsoft Exchange Server? I see a real business opportunity here for someone who wanted to take TMDA and make it an enterprise solution.

    Support for Exchange Server is not planned primarily because I have no access to this software, and no interest in developing in a Microsoft environment. Also, TMDA is an opensource endeavor, not a profit oriented one, and therefore I'm also not interested in turning it into an "enterprise solution". I enjoy my personal freedom too much to consider this.

    However, due to TMDA's liberal BSD-style license, there is nothing stopping an enterprising individual or organization from doing either of the above.
  • Can't spammers just setup an auto-responder to defeat TMDA?

    In theory yes, but in practice this is not likely to happen. Most SPAM is unrepliable, so TMDA's confirmation requests are never delivered to them. They use non-valid return addresses as to not incur the cost of the tremendous number of bounces they generate. Using a valid return address to process all the bounces looking for confirmation messages to auto-reply to would defeat their economies of scale. It would also make them easy to block, track down and report, sue, etc.

    In short, trying to thwart TMDA in this manner would defeat the cost-effectiveness of the bulk-mailing process. Simple economics keep us safe.

    Additionally, the majority of the population is not yet using TMDA or a TMDA-like system to protect their mailbox, so we are simply not worth the extra effort. There are plenty of weaker, "less fit" targets to prey on, and so they will, passing over us in the process.

    But should these facts change, TMDA could modify its (currently very simple) challenge response to make it more difficult for a computer to auto-reply to. The level of difficulty could increase as much as is necessary for the sender to prove their humanity and legitimacy. Until someone teaches a computer program to read and understand the English language, I think we will have plenty of options here.
  • Why isn't TMDA written in Perl, C, C++, Java, etc..? Or, any plans to translate TMDA into Perl, C, C++, Java, etc..?

    In short, no. Python is an excellent choice for an application like TMDA. Python is a simple yet extremely powerful language with a reasonably fast interpreter and comprehensive standard library. It is also very portable and has several features that make it very attractive for Rapid Application Development. I also happen to enjoy programming in Python more than any other language.

    There are a few reasons that I can think of why you are asking this question:

    • You run a high traffic site and are worried about the performance implications of an application written in an interpreted language. I can understand your concern, but I wouldn't discount TMDA for performance reasons just because it is written in Python. Mailman is a mailing list manager written in Python, and it handles sourceforge.net's list traffic just fine (thousands of lists, hundreds of thousands of messages/day).

      If you find TMDA has performance limitations, we can always try and optimize it. This might be the case as to my knowledge, it currently isn't being used in any extremely high traffic environments. You'll be doing the entire user community a favor by experimenting, reporting your results, and working with the developers to improve TMDA's performance.

      In the meantime, it's likely that not all your users will want to use TMDA, so you can save some processing by making it an optional service. I'd also recommend storing your lists in DBM or CDB format rather than text where possible, as matching from database files is significantly faster (fractions of a second).

    • You are a developer and want to extend TMDA, but aren't familiar with Python. If you are a programmer of any repute, this shouldn't be a problem. Python's elegant and remarkably clear syntax make it very easy to learn. Certainly much easier than a language like Perl for example. The Python Tutorial is a good place to start. You may be surprised how much you like it.