LevSelector.com |
Intro | home - top of the page - |
UA | ->MTA
<-LDA |
<--> | MTA<-
LDA-> |
UA |
When you send an email - you use a program called "user agent" (UA , - also called MUA - Mail UA, or email client) - which helps you to send and receive emails, as well as sort things around in folders.
UA sends your email to a "Mail Transport Agent" (MTA)
- usually an SMTP server listening on port 25.
(Try this from the prompt: telnet
SomeDomain 25). You may send email directly to a destination
MTA - or to an MTA on your provider - which will then pass your email to
the destination MTA. Also note, that email may be passed not only using
TCP/IP, but also via UUCP, etc.
UA receives email from Local delivery Agent (LDA) which may be implemented quite differently. For example, email can be delivered to user mailbox in his directory, or it can be available from a POP3 server (it listens on port 110) or from IMAP4 server (listens on port 143), or some other way.
* http://www.faqs.org/faqs/mail/setup/unix/part1/ - FAQ
Main abbreviations:
MTA - Mail Transport Agent (Routing,
LDA and RDA)
LDA - Local delivery agent
RDA - Remote delivery agent
UA - User Agent
SMTP - Simple Mail Transfer Protocol (ESMTP - extended SMTP) - main protocols for sending email
POP3 - Post Office Protocol ver.3
- a client-server protocol to retrieve email from a remote server. POP3
server listens on TCP port 110.
IMAP4 - Internet Message Access
Protocol - alternative to POP3, listens on port 143. Messages are stored
on the mail-drop server. Allows user to manage email on the server (which
is good).
MIME - Multipurpose Internet Mail
Extensions - a way to send binary info (encoded text, spread sheet, image,
etc.). Message can be a multipart message, containing several "inner" messages
of different Content-Type.
APOP - Authenticated Post Office
Protocol
Ph - Directory Access protocol
LDAP - Lightweight Directory Access Protocol
S/MIME, SSL,
or RSA support for message encryption.
SMTP commands | home - top of the page - |
SMTP commands:
telnet mail.somedomain.com
25
Try those 14 commands from prompt (RFC 821).
SMTP Command | - | What It Does |
---|---|---|
HELO somedomain | - | Hello, identify the SMTP sender to the SMTP receiver. |
MAIL FROM: reverse-path | - | Mail - start an e-mail transaction to deliver the e-mail to one or more recipients. |
RCPT TO: forward-path | - | Recipient - identify an individual recipient of e-mail. |
DATA | - | Data - consider the lines following the command to be e-mail from the sender. |
SEND FROM: reverse-path | - | Send - deliver e-mail to one or more work stations. |
SOML FROM: reverse-path | - | Send or mail - deliver e-mail to one or more work stations or recipients if the user is not active. |
SAML FROM: reverse-path | - | Send and mail - deliver e-mail to one or more work stations and recipients if the user is not active. |
RSET | - | Reset - end the current e-mail transaction. |
VRFY string | - | Verify - ask the receiver to confirm that a user has been identified. |
EXPN string | - | Expand - ask the receiver to confirm that a mailing list has been identified. |
HELP string | - | Help - ask the receiver to send helpful information to the sender. |
NOOP | - | Noop - ask the receiver to send a valid reply (but specify no other action). |
QUIT | - | Quit - ask the receiver to send a valid reply, and then close the transmission channel. |
TURN | - | Turn - ask the receiver to send a valid reply and then become the SMTP sender, or else ask the receiver to send a refusal reply and remain the SMTP receiver. |
Note: each command should be finished with <CRLF>.
Note: A dot by itself in a line marks the end of your
multi-line message (end of "DATA" command).
Note: The reverse-path consists of an optional
list of hosts and the sender mailbox. When the list
of hosts is present, it is a "reverse" source route and indicates that
the mail was relayed through each host on the list (the first host in the
list was the most recent relay). This list is used as a source route to
return non-delivery notices to the sender. As each relay host adds itself
to the beginning of the list, it must use its name as known in the IPCE
to which it is relaying the mail rather than the IPCE from which the mail
came (if they are different). In some types of error reporting messages
(for example, undeliverable mail notifications) the reverse-path may be
null.
Note: The forward-path consists of an optional
list of hosts and a required destination mailbox. When the list of hosts
is present, it is a source route and indicates that the mail must be relayed
to the next host on the list. If the receiver-SMTP does not implement the
relay function it may user the same reply it would for an unknown local
user (550). When mail is relayed, the relay host must remove itself from
the beginning forward-path and put itself at the beginning of the reverse-path.
When mail reaches its ultimate destination (the forward-path contains only
a destination mailbox), the receiver-SMTP inserts it into the destination
mailbox in accordance with its host mail conventions.
For example, mail received at relay host A
with arguments
FROM:<USERX@HOSTY.ARPA>
TO:<@HOSTA.ARPA,@HOSTB.ARPA:USERC@HOSTD.ARPA>
will be relayed on to host B with arguments
FROM:<@HOSTA.ARPA:USERX@HOSTY.ARPA>
TO:<@HOSTB.ARPA:USERC@HOSTD.ARPA>.
This command causes its forward-path argument
to be appended to the forward-path buffer.
Read command descriptions here:
* http://www.freesoft.org/CIE/RFC/821/13.htm
-
* http://www.freesoft.org/CIE/RFC/821/14.htm
-
* http://www.nthelp.com/smtp_commands.htm
-
* http://users.pandora.be/sonal.nv/ics/faq/TSMTPClient/SmtpMailCmds.html
-
* http://www.ietf.org/rfc/rfc0821.txt
- text of RFC 821 "SIMPLE MAIL TRANSFER PROTOCOL" by Jonathan B.
Postel
POP3 commands | home - top of the page - |
POP3
telnet pop.somedomain.com 110
Try those commands (from RFC1225):
Command | - | Responses | Examples | |
---|---|---|---|---|
USER name | - | +OK name is welcome here
-ERR never heard of name |
USER David
+OK Please enter a password |
|
PASS string | - | +OK maildrop locked and ready
-ERR invalid password -ERR unable to lock maildrop |
PASS test
+OK valid logon |
|
QUIT | - | +OK | +OK Server closing connection | |
STAT | - | +OK nn mm | STAT
+OK 2 320 |
|
LIST MsgNo | - | +OK scan listing follows
-ERR no such message |
LIST
+OK 2 messages (320 octets) 1 120 2 200 ... LIST 2
|
|
RETR MsgNo | - | +OK message follows
-ERR no such message |
RETR 1
+OK 120 octets < the POP3 server sends the entire message here > |
|
DELE msg | - | +OK message deleted
-ERR no such message |
DELE 2
+OK message deleted |
|
NOOP | - | +OK no transaction | NOOP
+OK |
|
LAST | - | +OK nn | LAST
+OK 2 |
|
RSET | - | +OK | RSET
+OK maildrop has 2 messages (320 octets) |
|
Additional Commands | ||||
TOP msg nn | - | +OK top of msg
-ERR |
TOP 1 10
+OK < first 10 lines of the header > |
|
RPOP user | - | +OK
-ERR |
RPOP david
+OK enter password |
Read command descriptions here:
* www.freesoft.org/CIE/RFC/1725/index.htm
-
* www.freesoft.org/CIE/RFC/1725/index.htm
-
Main MTAs | home - top of the page - |
Main MTAs (Mail Transport Agents - Servers):
* www.sendmail.org
- sendmail - a 20-year old veteran MTA, comes standard with all Unix-s.
* www.sendmail.com
- commercial version of sendmail
* http://serverwatch.internet.com/reviews/mail-sendmail.html
- good review
Known to be difficult to configure (you have to spend hours trying
to figure out how something like this works: $*<$+@$-.$=W>$*).
As Chris Lewis, author of UNIX Email Software Survey FAQ writes "Please
don't take this as condescending - I've been working on/in/with email systems
for over 12 years and I *still* won't play with (as just one example) sendmail.cf's."
That's one of the reasons why many shrewd businesses use qmail or some
other MTA instead of standard sendmail.
Sendmail can do just about anything - and this is also its main problem. The language of the sendmail.cf is cryptic, but the problem is that it's extremely difficult to know when the rules you are implementing are the right thing - many sendmail configurations do slightly buggy, or even extremely buggy, or illegal things. Default configurations and minimal changing is the approach to take. The major problem with sendmail is that it tries to do too many things. Rather than confining itself to handling local mail, and simply routing external mail and leaving transport-specific format/standards conversions to transport software, it attempts (nay virually *insists*) that you have to do all of the format/standards conversions for different transports all at once. Which results in configuration files that are veritable nightmares to maintain. And that many sendmail.cf files depend on out-of-date standards for different transports, rather than trying to unify them (as in RFC976). Indeed, while common wisdom and practice mandates that MTAs don't rewrite headers, sendmail makes it extremely difficult to *not* rewrite headers. Which results in many major systems attempting to "be nice", yet, totally scramble return addresses and the like. There are several different sendmail lineages in the world but they seem to be coming together now with Eric Allman's work creating sendmail V8.x. Sendmail V8.1 was shipped with BSD 4.4 UNIX. It is strongly recommended that anyone contemplating running sendmail upgrade to at least 8.9.x (see www.sendmail.org), which has a number of serious security problems fixed. Administrators wishing something easier to configure than sendmail, particularly with the addition of filtering rules, are best advised to consider using qmail, exim instead, or, using mailshield SMTP relaying to stand in "front" of sendmail. |
* www.qmail.org - fast and easier to configure than sendmail.
Was written originally by Dan Bernstein to overcome the limitations
of and flaws in sendmail. qmail is
capable of handle large volumes, fast, secure. Docs available in many languages
(for example, in Russian - www.ru.qmail.org:8101/
) . Mailing lists: mailto:qmail-help@list.cr.yp.to
, mailto:qmailannounce-help@list.cr.yp.to.
- qmail is designed using unix philosophy as a set of many small utilities each performing its own task. Even qmail's configuration is modular. qmail doesn't have large monolithic configuration files with complex structures, that have to be read and parsed every time that a new mail process is created, only to have 70% or more of that information remain unused because it is irrelevant to the task at hand. qmail's configuration comprises individual files in /var/qmail/control, each file having a single job. The names of the local domains are listed, one per line, in /var/qmail/control/locals, for example. Many configuration tasks (and FAQ answers!) are, as a result of this philosophy, one-liners involving `echo' and `cat'. - qmail was designed to be secure. Not only does the mail system not trust the outside world, but different modules in the mail system don't even trust one another. Different parts of the mail system run under different non-privileged UIDs ("qmaild", "qmailr", "qmailq", &c.). So, for example, even if the SMTP server (qmail-smtpd, which runs as user "qmailr") were compromised, the rest of the system will not be. qmail has only one setuid binary, qmail-queue which is setuid to one of the qmail user IDs, not root. qmail has only two programs that run as root, qmail-start which spawns the other daemon processes under the correct UIDs and qmail-lspawn which spawns the local delivery program qmail-local under the UID and GID of the user being delivered to. Neither program writes to any files or spawns any program under the root user ID. qmail doesn't treat root as a "real" user, and so never delivers mail as root. - qmail provides a flexible aliasing/forwarding mechanism, supports /etc/aliases and .forward with its fastforward and dot-forward packages. Each user controls all local parts that begin with the user's username, allowing each user to have an unlimited number of different local parts. Delivery to each local part is (optionally) controlled by a separate .qmail-* file in the user's home directory. |
* www.postfix.org - postfix - even faster server (use with procmail).
* www.exim.org - Exim (Author: Philip Hazel - ph10@cus.cam.ac.uk) is a message transfer agent (MTA), similar to Smail 3, but its facilities are more extensive, and in particular it has some defenses against mail bombs and unsolicited junk mail in the form of options for refusing messages from particular hosts, networks, or senders. It can be installed in place of sendmail, although the configuration of exim is quite different to that of sendmail.
* http://serverwatch.internet.com/mailservers.html
- some other email servers
mail UAs | home - top of the page - |
On MS Windows platform people mostly use:
- Microsoft Outlook (Express),
- Netscape Composer built-in email client,
- Eudora,
- Forte Agent,
- Lotus Notes email,
- Pegasus,
- and some others (see list on www.tucows.com).
On Unix there is a whole bunch of utilities:
- mail = binmail
- simple UA. Binmail stores mail in "mbox" format. It also may serve as
a TA (Transport Agent) on some systems, but it is not any good at that.
On BSD, binmail invokes sendmail to do the MTA function.
- rmail - remote mail -
handles remote mail received via uucp. You better replace it with smail
2.5 etc.
- Mail - the original BSD
UA. Not bad, stores mail in "mbox" format.
- mailx - AT&T's answer
to BSD "Mail", from which it is descended. Probably should be avoided,
stores mail in "mbox" format.
- mush (or Mush - also available
commercially as Z-Mail from z-code.com) - "Mail User's Shell" (author Dan
Heller <argv@well.com>). Internally, mush has a csh-like scripting
language, you can virtually build your own library of email features. Has
several interfaces (command-line or screen). Mush stores its messages
in "mbox" format, or MMDF format. Note: Z-Mail is not related at all to
Zmailer. Zmailer is an MTA.
- elm - a screen-interfaced
replacement for "/bin/mail" and "mailx". Has conenient utilites
(including autoreply), easy to use.
- mm - a good UA similar
to old MM program written and developed for DEC20s over a period of many
years. Was developed at Columbia University. Uses mbox file format (can
also use some others).
- MM - good UAs for novices
from Columbia University (free).
- MH - Message Handling
system, in which each command is a separate program, and the shell is used
as an interpreter. So, all the power of UNIX shells (pipes, redirection,
history, aliases, and so on) works with MH - you don't have to learn a
new interface. Mail messages are stored in individual files.
- XMH - provides a graphical
user interface to the MH Message Handling System.
- EXMH - an X interface
to the MH mail system written in John Ousterhout's Tcl/Tk language system
and requires that you have both Tcl/Tk and MH installed. If you have
metamail
installed, exmh supports MIME. Has many conenient features.
- GNU Emacs Rmail - Rmail
is an Emacs subsystem for reading and disposing of mail. Rmail stores
mail messages in Rmail files in BABYL format (originally used under the
ITS operating system), although it can incorporate new mail from MMDF and
Unix format files, or mixed-format files. Reading the messages in
an Rmail file is done in a special major mode, Rmail mode, which redefines
most letters to run commands for managing mail. Replying uses another
Emacs subsystem, Mail mode.
- VM - View Mail - a GNU
Emacs subsystem that allows UNIX mail to be read and disposed of within
Emacs. Commands exist to do tasks like bursting and creating digests,
message forwarding, and organizing message presentation according to various
criteria.
- MH-E: GNU Emacs front
end for MH. It is a part
of the standard GNU Emacs distribution. It offers all the
functionality of MH, the visual orientation and simplicity of use
of xmh, and full integration with Emacs. The command set is similar
to that of
rmail (the Emacs front end for BSD mail) and BSD mail
itself. Mh-e allows one to read and process mail very quickly. During a
reply, the original message is displayed simultaneously in another window
for easy reference where a mh-e command can quickly incorporate and format
this text into your reply. With mh-e you compose outgoing messages in Emacs.
- C-Client - a general library
useful for creating MUA's (useful if you want to write a new MUA).
- Metamail - a software
implementation of Mime, designed for easy integration with traditional
mail-reading interfaces.
- MailManager - a A MUA
implemented using C-Client for NeXT computers.
- MMail - a WYSIWYG, text
composition, visualization and MIME mailer.
- Pine - an easy to use
email UA developed by the University of Washington (Authors: Lundblade,
Seibel, and Crispin). Originally based on Elm (Pine Is No-longer Elm).
Very simple to use, works on all unixes and even on DOS. It's built-in
text editor is also available as a stand-alone program (called Pico) -
very simple, convenient, even has spell-checker.
- Ream - similar to elm
in a number of ways, but considerably smaller and with a stronger separation
between MUA and MTA behaviours. It runs over sendmail, mmdf and PP.
- ML - a mail reader for
the X window system, using Motif and the IMAP protocol. It provides active
filtering of mail into user-defined views using a simple but powerful filter
language.
- Z-Mail - a commercial
variant of mush - a UNIX World Magazine
"Product of the Year" winner for 1991, is a complete electronic mail system
for workstations, PCs, ASCII terminals and Macs. Z-Mail provides
Motif and Open Look graphical user interfaces, as well as two character
modes. The software has been ported to nearly every system that runs
UNIX, and it works with all standard UNIX mail transport agents including
sendmail, binmail, smail, MMDF and X.400 gateways. Z-Mail can replace
or coexist with standard mail user agents on the system, including BSD
Mail, AT&T mailx, Sun Mail Tool, Elm or Mush. Most anyone can
use Z-Mail "off the shelf" and immediately benefit from its simple interface
and advanced features.
misc email programs | home - top of the page - |
- uumail - Uumail is a very
old and obsolete precursor to smail 2.5.
- smail 2.5 - a small, simple
and hard-coded rule MTA for use on UUCP networks. Not recommended for new
installations. Can be used with sendmail as a UUCP router.
- lmail - implements mail-to-pipe
and mail-to-file aliasing - to be used with smail 2.5. Has bugs.
- smail 3 - a domain-capable
mail router and delivery program that works in the UUCP zone and on the
Internet and that is capable of gatewaying between the two. It supports
SMTP, UUCP mail, alias files, .forward files, mailing list directories,
pathalias files, /etc/hosts files, the domain name system, and can also
query uucp for neighboring sites, automatically. It is also very simple
to configure with a reasonable certainty of correctness.
- ZMailer - intended for
gateways or mail servers or other large site environments that have extreme
demands on the abilities of the mailer.
- MMDF - a MTA older and
simpler than sendmail. Understands smtp, uucp, and other protocols, maintained
in Germany.
- PP - A MTA for high volume
message switching, protocol conversion, and format conversion. PP is an
appropriate replacement for MMDF or Sendmail, and also supports SMTP and
UUCP mail.PP is *very* large and ideal for large organizations, where PP
would be used as "backbone mail servers", and something simpler on the
"client" computers. It does have _substantial_ learning and support
requirements, and is *not* suitable for smaller installations. It
does, however, shine in large production environments, where policy-based
routing, high levels of security, or extensive gatewaying to different
transports is required.
- SVR4 mail - a domain-capable
mail router and delivery, supports SMTP, UUCP mail, alias files,
forwarding files, mailing list directories, /etc/hosts files, the domain
name system, and can also query uucp for neighboring sites, automatically.
It is also very simple to configure with a reasonable certainty of correctness.
It also supports mail-to-pipe and mail-to-file. SVR4 mail uses configuration
files to resolve addresses based on their syntax, somewhat similar to sendmail,
but using regular expressions and a more easily understood syntax.
- deliver - allows any user
to write a shell script that processes all incoming mail messages for that
user. The system administrator may also install scripts that process
all messages by installing it as the Local Delivery Agent (LDA, lmail replacement).
The output of a script is a list of mail addresses, files and programs
that should receive the message. It has access to each message as
it is processed, so the action can be content dependent. The script
may also generate automatic replies, like the "vacation" program, or pass
along a modified version of the original message. Deliver can be used to
construct mail-based services (e.g. automatic mailing list maintenance).
It can also be used to filter mail automatically in prearranged ways (e.g.
encryption and decryption, tossing junk mail, or vacation notices).
- procmail - can be used
to create mail-servers, mailing lists, sort your incoming mail into separate
folders/files (real convenient when subscribing to one or more mailing
lists or for prioritising your mail), preprocess your mail, start any programs
upon mail arrival (e.g. to generate different chimes on your workstation
for different types of mail) or selectively forward certain incoming mail
automatically to someone. Procmail can be used and installed by an unprivileged
user (for himself only). It can be used as a drop in replacement for the
local delivery agent /bin/mail (with biff/comsat support). It can be used
as a general mailfilter for whole groups of messages (e.g. when called
from within sendmail.cf rules). The accompanying formail
program enables you to generate autoreplies, split up digests/mailboxes
into the original messages, do some very simple header-munging/extraction,
or force mail into mail-format (with leading From line). Also included
is a comprehensive mailinglist/archive management system. Since procmail
is written entirely in C, it poses a very low impact on your system's resources
(under normal conditions, when you don't start other programs/scripts from
within it). Procmail was designed to deliver the mail under the worst conditions
(file system full, out of swap space, process table full, file table full,
missing support files, unavailable executables; it all doesn't matter).
Should (in the unlikely event) procmail be unable to deliver
your mail somewhere, the mail will bounce back to the sender
or reenter the mailqueue (your choice).
- mailagent - yet another
mail filter, written in perl, which
will let you do anything with your mail. Plus it is very extensible.
It has all the features you may expect from a filter: mailing lists
sorting, forwarding to MTA or to inews, pre-processing of message before
saving into folder, vacation mode, etc... It was initially written as an
ELM-filter replacement, but has now enough power to also supplant MMDF's
.maildelivery. There is also a support for @SH mail hooks, which allows
you to automatically distribute patches or software via command mails.
The mailagent was designed to make mail filtering as easy as it can be.
It is highly configurable and fairly complete. Rules are specified in a
lex-like style, with the full power of perl's regular expressions. The
automation supports the notion of mode, and header selection has many magic
features built-in, to ease the rule writing process. To give a simple
example, the two following rules:
Subject: /cron output/ { SAVE cron }; To Cc: dist-users { FORWARD friend@acri.fr; LEAVE }; would save in a folder 'cron' all cron-related mail, and forward mail from the dist-users mailing list to a friend, leaving a copy in the system mailbox for immediate processing... The distribution comes with a set of examples, an exhaustive test suite, and naturally a detailed manual page. It should be noted that the mailagent will work even if your system administrator forbids "| programs" hooks in the ~/.forward, provided you have access to some sort of cron daemon. mailagent is available from CPAN: http://www.perl.com/CPAN-local/authors/Raphael_Manfredi/ |
mailing lists managers (MLM) | home - top of the page - |
MLM - Mailing List Managers (also called listserves):
-
* Lsoft Listserv - www.lsoft.com - The most popular mailing-list management software on the market (~50% of ALL email list messages on the Internet). Examples: C|NET - over 4 million users on 23 LISTSERV lists, University of Arizona - 1,934 lists on a single RS/6000 server. Platforms - Unix, Windows, VMS. Listserv requires low maintenance after installation, and it is very reliable. But it is expensive for low-end users. Read this review - serverwatch.internet.com/listserver-listserv.html (also for Listserv Lite version review - serverwatch.internet.com/listserver-listservlite.html ). Listserv has somewhat tricky installation - and it is not very intuitive for end-users. |
* ezmlm - www.ezmlm.org - a qmail-based mailing list manager written by Dan J. Bernstein (author of qmail). It has all the basic functionality of a mailing list manager, such as subscriber address management including automated bounce handling as well as message distribution and archiving. ezmlm-idx is an add-on to ezmlm. It adds multi-message threaded message retrieval from the archive, digests, message and subscription moderation, and a number of remote administration function. The whole package is very good and easy to work with. |
* Lyris listmanager
- www.lyris.com - very good. Unix, Windows,
OS/2. Has probably the best Web-based interface for admins and users.
Allows users to read, contribute, search, join, and leave mailing lists
over the Web. Users also have the option of choosing to receive their messages
from Lyris mailing lists by regular e-mail or by accessing and reading
them on the Web.
Free - unlimited number of small mailing lists (<200 members per list). $500 - 500 members/list 5K - unlimited number of members per list + ultra high-performance mail sending engine ( hundreds of messages per second, good for 10K members and more). For a little extra - get secure private newsgroups. Additional features in Lyris include an extremely fast mail engine that is capable of delivering hundreds of messages per second, automatic e-mail error detection, an installation wizard, automatic message archiving, fast text-based searching capabilities for the mailing list archives, multithreading capabilities (offers better performance when the server is used in multiple CPU configurations), extensive logging capabilities, numerous moderation options (for moderated discussion groups), server action phrases (customized auto-responders with tailored responses based on the content of messages), and support for virtual hosts (allows multiple organizations to share one Lyris server while appearing to users to be separate, distinct servers). Excellent security options. Excellent documentation and support. Admin duties can be delegated to other users. Failsafe unsubscription system, support for parent/child lists, site admin can now disable mailing lists and limit the number of members on a list, progress reports can now report full SMTP delivery summary, document mail merging, password option (pw=) when subscribing, server cookie and thread-priority commands added to Perl toolkit, speed improvements, security vulnerabity fix, improved mail loop detection, SMTP thread-tracking option; bug fixes; optional ODBC database connectivity. Random header/footer rotation; review options to obtain reports by type of member; headers and footers can be defined for an entire site or server; member id, site, and list document caching for increased speed; option to allow blank message bodies in postings; Built-in Web server; HTTP fetching of ads; in-memory message processing; versions go up to several million messages per hour; rebranding option; Linux version now available; Enhanced analysis tools; mail engine now scales to 500,000 unique messages per hour; more flexible mail merge; unique text or banner ads into can be added into every e-mail creating advertising opportunities; enhanced "documents" (e.g., Hello and Confirm) can now use double-byte characters, other international symbols (such as accents), and HTML to further improve list members' experiences; read review here: serverwatch.internet.com/listserver-lyris.html - www.lyris.com = www.lyristechnologies.com - Lyris Technologies, Inc. (since 1994, in CA): -- listmanager - Lyris ListManager helps you manage permission email campaigns, email announcement lists, and online discussion groups. -- listmanager_sql - Lyris ListManagerSQL is opt-in email marketing software designed for targeted email campaigns and highly-scalable email broadcasting majordomo - program -- mailengine - Lyris MailEngine sends or relays email up to 150,000 messages per hour from a single server. -- mailshield - Lyris MailShield is a server-based email filtering program for businesses. (also www.mailshield.com ) |
* Majordomo - http://www.greatcircle.com/majordomo/ - Majordomo is one of the first tools ever created for managing mailing lists on the Internet. Unix based. Small C-program + perl. Free. Works in conjunction with some MTA (sendmail, qmail, smail). Confusing setup. No tech support. Outdated. Doesn't attempt to detect mail loops. Read FAQ here: www.greatcircle.com/majordomo/majordomo-faq.html , Review - serverwatch.internet.com/listserver-majordomo.html . |
* SmartList
- an email list management system based on procmail (http://www.procmail.org)
and Perl.
- http://www.hartzler.net/smartlist/SmartList-FAQ.html - FAQ - http://www.hartzler.net/smartlist/Manual.html - manual |
Some other programs (mostly Windows based):
* www.mailloop.com - Mailloop ($400, Windows) - used and sold by some shrewd mailing list marketers * Cren Listproc
- www.listproc.net - not very convenient
to maintain http://serverwatch.internet.com/listserver-unity.html
Comparing MLMs look for features like ability to restrict submissions, detecting loops, adding standard header & footer (with info how to get help on unsubscribe), archiving, address translations (allows a person to have different addresses at which he receives email or sends email from). * http://www.postcast.com/
- PostCast is an e-mail and database software for MS Windows (MS Access)
with integrated SMTP mail server, e-mail merge client, scheduler, autoresponders
and many other tools.
|
How to run a mailing list - and some history.
The simpliest way to run a mailin list is to do it manually from your email program (for example Outlook). Send your email newsletter to yourself, and put all other addresses in the Bcc: field so the whole list isn't visible to the recipients. As your lsit grows, you may need some tools to merge the lists, for example: * Campaign - www.arialsoftware.com - * NetMailer - www.alphasoftware.com/netmailer/ - Further you may find a Web hosting which would provide you with a mailing list functionality (for example Majordomo) for ~ $10..20/mo - or free, if you already use their hosting. Having mail-list server will allow recepients to subscribe/unsubscribe by themselves - a must for a large list. There are also some services out there which will serve your mailing list for you -Yahoo and other search engines will give you lists of companies which provide service for smaller newsletter and discussion lists, too. Search for "listbot" on www.wilsonweb.com to see some links. Also read PC Magazine review - www.zdnet.com/pcmag/stories/reviews/0,6755,2425991,00.html. Some of these services are absolutely free, for example ListBot, - but will include some advertising. * eGroups - bought by Yahoo! - http://groups.yahoo.com/local/news.html
e-mail campaign provider:
Autoresponders with followup (for marketing):
|
In 1986, Eric Thomas created ListServ,
- the first automated list server
Later, Anastosias Kotsikonas developed an automated list server, ListProc, for Unix. Later Brent Chapman created a simple list server called Majordomo. This program was (and still is) very popular, it is free and easily customizable with Perl. Initially, list servers were email command driven. In 1997, Lyris
list server appeared with new features like web browser administration.
Some modern companies added some marketing/revenue-building features
( response tracking, trackable URLs, dynamic
content, and targeted content delivery).
|
more email programs | home - top of the page - |
Everything Email - resource with many links, but strangely lacking
main industry workhorses like sendmail, qmail, lyris, listserv, etc. Looks
like the site is compiled by a non-technical person targeting small user.
* http://everythingemail.net/
-
* http://everythingemail.net/email_software.html
-
* http://everythingemail.net/email_services.html
-
qpopper
cyrus
vpopmail homepage ( http://www.inter7.com/vpopmail )
qmail@planetsites.com - mailing list
Security and encryption: OpenPGP and S/MIME formats.
vCard - and vCalendar formats to distribute info about the person and
scheduling info.
Mailbox formats:
mbox (ant many variations of it) - many messages in one file
MH - each message in a separate file
Maildir - to be used with qmail - an enhancement of MH format.
Mailcap files
Email Related Books | home - top of the page - |
* "Programming Internet Email - David
Wood, O'Reilly, 1999 - very good. Describes protocols and software, provides
perl and java examples of solving common tasks (for example - has a perl
script mail.pl working similar to /bin/mail - but also capable of attaching
binary files).
* "Running qmail" - by Richard Blum, 2000 * "The qmail Handbook" - by Dave Sill, 2001 * "sendmail" - by Bryan Costales & Eric Allman, O'Reilly, 2nd ed., 1997 * "Sendmail - Theory and Practice" - by Frederick Avolio & Paul Vixie, 1995 * "sendmail for Linux" - by Richard Blum, 2000 * "Managing Mailing Lists" - by Alan Schwartz, O'Reilly, 1998 (reviews Unix-based mailing lists -- Majordomo 1.94.4, Listproc 6.0c, SmartList 3.10, and LISTSERV Lite 1.8d ) |
email with perl | home - top of the page - |
Email can be sent from Perl by
either invoking some external client program (like mail),
or invoking some MTA (like sendmail)
or connecting directly to some SMTP server (usually via port
25).
$sendmail' => '/usr/sbin/sendmail -t -oi';
open(MAIL,"|$sendmail"); print MAIL <<EOM; From: $from_email ($from_name) To: $to_email ($to_name) Subject: $subject $email_txt
|
Net::SMTP - Simple Mail Transfer
Protocol Client (Author - Graham Barr) - talks to SMTP server. The fastest
way when you need to send many emails. Note: Net::SMTP,
Net::POP3,
Net::FTP,
etc. are part of famous libnet library (go to CPAN and search for libnet)
- www.perl.com/CPAN-local//authors/id/G/GB/GBARR/.
* www.perldoc.com/perl5.6/lib/Net/SMTP.html
$smtp = Net::SMTP->new('mailhost',
Hello => 'my.mail.domain' Timeout => 30, Debug => 1, ); ------------------------- #!/usr/local/bin/perl -w use Net::SMTP; $smtp = Net::SMTP->new('mailhost'); $smtp->mail($ENV{USER});
$smtp->data();
$smtp->quit; |
Mail::Mailer - Simple interface
to electronic mailing mechanisms.
* www.perldoc.com/perl5.6/lib/Mail/Mailer.html
Sends mail using any of the built-in methods (mail, sendmail, smtp
server).
You can alter the behaviour of a method by passing $command to the
new method.
mail
Use the Unix system mail program to deliver the mail. $command is the path to mail. Mail::Mailer will search for mailx, Mail and mail (in this order). sendmail
smtp
$mailer = new Mail::Mailer 'smtp', Server => $server; test
|
use Mail::Mailer; use Mail::Mailer qw(mail); $mailer = new Mail::Mailer;
$mailer->open(\%headers);
|
- MIME::Lite package - good way to send attachments. Example: sending log file in case of failure (in csh syntax):
some_job >>& $log1file
if ( "$status" != "0" ) then echo "Error at:" >> $log1file date >> $log1file sendmime.pl --to=$mailTo --subject='some_job Failed' --msg_file=$log1file exit(1) endif |
$msg = MIME::Lite->new(
From =>'me@myhost.com', To =>'you@yourhost.com', Cc =>'some@other.com, some@more.com', Subject =>'A message with 2 parts...', Type =>'multipart/mixed' ); ### Add parts (each "attach" has same arguments as "new"):
#Output a message:
|
Here is how to send an HTML formatted email with image(s) attached to the message itself:
#!/usr/local/bin/perl
# email html with image attached use MIME::Lite;
# Standard CPAN module
my $subject = 'MIME test - HTML with image';
# Create the message headers
# Attach the HTML content
$mime_msg->attach(Type => 'text/html',
# Attach the image
$mime_msg->send; |
- MIME::Base64
package: Base64.pm, Quotedprint.pm
- MIME::tools
package: Body.pm, Decoder.pm, Entity.pm, Head.pm,
Parser.pm, ParserBase.pm, ToolUtils.pm, Tools.pm, Words.pm
- Mail::Cclient
package: Cclient.pm - perl interface to c-client
libraries.
- Mail::Folder
package: Folder.pm - provides access to multiple
mailbox types
- Mail
tools package: Address.pm, Alias.pm, Cap.pm, Field.pm,
Filter.pm, Header.pm, Internet.pm, Mailer.pm, Send.pm, Util.pm
- Libnet package: POP3.pm, SMTP.pm,
etc.
- POP3::Client package: POP3Client.pm
some useful perl email programs:
- webmail - http://opensource.jaos.org/
- Perl webmail is a CGI script that interfaces with a POP mail server that
you provide. It can check mail, read messages, reply, forward, and delete,
and it doesn't have to be a local mail server. This script talks strictly
POP3 and SMTP for sending mail.
- mailagent - www.perl.com/CPAN-local/authors/Raphael_Manfredi/
- mail filter and processor - see description earlier on this page.
- MailMan -- www.endymion.com/portfolio/software/scripts/mailman.htm
- MailMan is a simple 1-file CGI script written in Perl5 (comes with some
images and html templates). Just unzip it somewhere under your public_html
- and you can start using it. MailMan presents a browser interface similar
to hotmail, yahoomail, etc. and allows you to read and send email through
standard POP3 and SMTP servers. It uses only libraries which are part of
standard Perl5 distribution - so it works right out of the box on both
Unix and Windows platforms. MailMan is designed for users who are away
from their desks, in conjunction with a 'primary' mail reading program.
By default, it does not delete messages from the server. You can download
free version for private or non-profit use, but the perl script is sort-of
encrypted (names are made meaningless, parts of the script are coded in
hex strings - and packed/evaled on the fly). You can also buy ($250 - standard,
$400 - pro). Very good script.
- MailMan -- www.list.org
- mailman Mailing list manager - written in Python (and a little bit in
C).
- WWW-Mail - www.vejrum.dk/www-mail/www_mail.htm
- www Mail Client/Gateway
- PerlMx - www.ActiveState.com/PerlMX
- Mail filtering
More scripts:
- http://www.emailman.com/unix/mailinglist.html
-
- http://www.mml.org.ua/
- minimalist -
- http://totalscripts.com/pages/Perl_Scripts/MLM/
-
- http://www.quikpix.com/pages/E_Design/Perl_CGI_Scripts/Mass_Mailing/-
- http://www.devdaily.com/Dir/Perl/CGI/E_Mail/
-
- http://perl.miningco.com/compute/perl/cs/scriptswebbase/
-
- http://www.cgifiles.com/scripts/perl/webmail.shtml
-
- http://www.secureroot.com/security/advisories/9761547364.html
-
- http://webcab.de/we/Computers_and_Internet/Computers/Programming_Languages/PERL/Scripts/
-
Java Mail API | home - top of the page - |
javax.mail package
Avoiding Spam | home - top of the page - |
- Avoid posting your real email on usenet groups, mailing lists, commercial
web sites.
- Occasionally post a meaningful message to news.admin.netabuse.email
using your real address.
Filter incoming messages:
- use procmail to filter out spam before it gets to your mailbox.
- use filter in your UA.
Revenge:
- mail bomb - send 1000s of long messages to the spammer - not
recommended. Better to analyze the headers, find who the spammer
is - or at least who is his provider - and send this ISP a note (or send
it to their backbone ISP).
Spammers can use a misconfigured MTA. Normally an MTA does not allow SMTP relaying, that is to send email from outside address to any other address. They only send emails from outside to one of their "internal" clients. Because if it will allow anybody to connect to it and send messages to any address - this may be used by a spammer.
Here are some links:
- www.spamcop.net - for
all of the spam-spanking goodness you crave.
- Mail::SpamAssassin - Perl module
- Mail::Audit - Perl module
- http://www.spambouncer.org/
- Spam Bouncer which consists of a bunch of procmail scripts
- http://razor.sf.net/ - Vipul's Razor - a distributing system
for identifying spam