receivedtodb(1)
NAME
- receivedTodb - validate the e-mail addresses in "To: " or
- "Cc: " records in the header of e-mail against e-mail addresses
- in a database file
SYNOPSIS
receivedTodb [-A] [-c] [-d] [-D] [-e ex_address] [-P] [-r m|n] [-v] dbfilename [filename(s)]
DESCRIPTION
- ReceivedTodb.c is for validating the e-mail addresses in
- "To: " or "Cc: " records in the headers of e-mail files against
- e-mail addresses in a database file.
- The program requires a Posix compatible regex(3) library
- to parse the e-mail addresses, and mmap(2) to map the database
- file of e-mail addresses into the Unix VM system. The e-mail ad
- dresses from the e-mail header are validated against the database
- file using a binary search. The database file name is a required
- command line argument.
- The database is a standard Unix text file, one e-mail ad
- dress per line, in lexical order, constructed with "sort -u in
- file > outfile", or equivalent.
- The database mechanism is conservative with machine re
- sources, requiring about 12.5 micro-seconds of machine time to
- lookup a word in the Unix system dictionary, (2.5 MB, quarter of
- a million words, single 466 MHz., Pentium, lightly loaded, Linux
- 2.2, time(1) command to lookup every word in the dictionary, di
- vided by the number of words.) Conceptually, the database mecha
- nism is implemented similar to the the technique used in the
- look(1) command, but requires exact matches, as opposed to par
- tial key matches.
- The input e-mail file name(s) may be supplied as addition
- al optional command line arguments, or redirected to the program
- via stdin for compatibility with procmail(1), and other e-mail
- scripting agents.
- A suitable procmail(1) recipe example might be:
:0 wfh
* ? receivedTodb address.db
| formail -A "X-Notice: Message in address.db- database"
- The -e ex_address option can be used to preclude finding
- specific e-mail addresses and/or domains in the database. It is
- useful for excluding the e-mail addresses, or domains, of up
- stream relays and/or forwarding e-mail providers. The address may
- be a domain, subdomain, or complete e-mail address, regardless of
- whether the -d option is specified, or not. The -e option can be
- used multiple times to preclude finding many addresses or do
- mains.
- The program contains less than 300 lines of declarations
- and statements, all of which are documented with in line com
- ments.
- The program has been compiled and tested on SunOS, So
- laris, and Linux, and may work on other brands of Unix.
- The program returns 0 if no error and a match was found in
- the database file for the e-mail addresses in any "To: " or "Cc:
- " header records, 1 if no error and no match found; else returns
- a unique error code greater than 1 representing the error encoun
- tered-which will, also, print an error diagnostic to stderr.
- The -r option is useful for controlling the return value
- under error conditions-for example, the program return can be
- preempted if the database file can not be opened, (or read,) with
- a return value of match, or no match, depending on environmental
- requirements.
OPTIONS
- dbfilename
- Database file name.
- filename(s)
- E-mail file name(s), (defaults to stdin).
- -A Use Apparently-To: records instead of To: and Cc:.
- -c Print all matching e-mail addresses, not just the
- first.
- -d The database file contains only domain names of e
- mail addresses.
- -D Use Delivered-To: records instead of To: and Cc:.
- -e ex_address
- Ignore the address, ex_address, even if found.
- -P Print the string(s) not in the database.
- -r m|n On file error, exit return = match for m, no match
- for n.
- -v Print the program's version information.
WARNINGS
- Under buffer overflow conditions, the program makes no at
- tempts at handling the situation-it just detects it, prints an
- error message, and exits.
SEE ALSO
- receivedIP(1), receivedIPdb(1), receivedIPdbdedup(1), re
- ceivedIPdbrm(1), receivedIPdbusort(1), bsearchtext(1), re
- ceivedAddress(1), receivedTodb(1), receivedMSGIDdb(1), receive
- dUnknowndb(1), tolower(1), toupper(1), bsorttext(1) receivedIP
- forgedb(1), hsearchtext(1), bsearchbody(1)
DIAGNOSTICS
- Error messages for incompatible arguments, failure to al
- locate memory, inaccessible files, opening and closing files, in
- put record buffer overflow, compiling regular expressions, and e
- mail header format or structure errors.
AUTHORS
---------------------------------------------------------------------
- A license is hereby granted to reproduce this software
- source code and
to create executable versions from this source code for - personal,
non-commercial use. The copyright notice included with - the software
must be maintained in all copies produced. - THIS PROGRAM IS PROVIDED "AS IS". THE AUTHOR PROVIDES NO
- WARRANTIES
WHATSOEVER, EXPRESSED OR IMPLIED, INCLUDING WARRANTIES OF
MERCHANTABILITY, TITLE, OR FITNESS FOR ANY PARTICULAR PUR - POSE. THE
AUTHOR DOES NOT WARRANT THAT USE OF THIS PROGRAM DOES NOT - INFRINGE THE
INTELLECTUAL PROPERTY RIGHTS OF ANY THIRD PARTY IN ANY - COUNTRY.
- Copyright (c) 2001-2007, John Conover, All Rights Re
- served.
- Comments and/or bug reports should be addressed to:
john@email.johncon.com (John Conover)- ---------------------------------------------------------------------
January 16, 2007