Создание WebMail на базе TWIG

1. OS Unix и почтовая система.
2. Компоненты почтовой системы.
 2.1. MTA и SMTP.
 2.2. MUA и POP3/IMAP.
 2.3. Известные MTA/MUA агенты и POP3/IMAP пакеты.
3. Наиболее известные системы WebMail.
4. Пример сборки, установки и настройки WebMail интерфейса на базе TWIG в OS FreeBSD.
 4.1. Коротко о сборке sendmail.cf во FreeBSD.
 4.2. Установка и настройка POP3/IMAP на базе Вашингтонского IMAP-UW.
5. Установка и настройка WWW Сервера на базе Apache.
 5.1. Установка и настройка Apache с поддержкой SSL.
 5.2. Установка дополнительных Apache DSO модулей (PHP) необходимых для WebMail.
6. Ссылки.
7. Благодарности.

1. OS Unix и почтовая система.

  Одним из исключительных достоинств Unix-like Операционных систем является
наличие почтовой службы для обмена сообщениями - письмами, как между
пользователями одного компьютера, так и с пользователями других компьютеров в
сети.
  Особенную актуальность работа почтовых систем приобрела с рождением Internet, 
единой глобальной, мировой сети. Благодаря сетевым коммуникационным протоколам
TCP/IP и UUCP (Unix-to-Unix Copy Program) появилась уникальная возможность
быстрой и надежной связи между компьютерами в сетях.
  В свою очередь для работы с почтой были разработаны протоколы удаленного
чтения: POP2/3 (Post Office Protocol) и IMAP (Internet Message Access Protocol)
и пересылки созданных почтовых сообщений между компьютерами сети: SMTP (SIMPLE
MAIL TRANSFER PROTOCOL).
  В настоящее время невозможно представить себе комплексы информационных и
услуг связи без электронной почты.

Итог: Работа электронной почты состоит из комплекса следующих технологий:
транспортная технология - программы MTA (Mail Transfer Agent) по протоколам
SMTP или UUCP передают почту между компьютерами сети, MUA (Mail User Agent) -
программы для создания, чтения почты по протоколам POP3/IMAP и передачи их
по SMTP MTA программам для доставки адресатам.
 
2. Компоненты почтовой системы.

Зная в общих чертах как работает почтовая служба internet, рассмотрим отдельные
компненты целостной системы, но прежде, напомним как формируются адреса
электронной почты.
 Как известно, протокол TCP/IP объединил большое количество разнородных сетей
и операционных систем со своими почтовыми службами и специфичным форматом
электронных почтовых адресов (BITNET, VAX/VMS и тд и тп).
 Мы остановимся лишь на формате электронных адресов актуальных в наше время,
uucp, internet и их смешанном виде.

Примеры:

Internet-Style:

 - lavr@dubna.su
 - lavr@unix1.jinr.ru
 - Andrey.Lavrentyev@jinr.ru
 - Andrey Lavrentyev 
 - lavr@dubna.su (Andrey Lavrentyev)
 - lavr%blues@dubna.su

адрес состоит из двух частей разделенных символом коммерческая at "@":

 - левая часть определяет имя адресата на локальной системе
 - правая часть определяет доменное имя в котором находится адресат

В адресе запрещено использовать пробелы и некоторые другие спец.символы.
Имя адресата в примерах:

 - Andrey Lavrentyev 
 - lavr@dubna.su (Andrey Lavrentyev)

игнорируется при разборке адреса программами MTA, используются только e-mail
адреса формата name@host.domain.name или name@subdomaine.domain.name или
name@domain.name

Адрес lavr%blues@dubna.su можно интерпретировать как:

- lavr - локальный пользователь хоста или поддомена blues
- dubna.su - в домене dubna.su

UUCP-Style:

 - sunct0!lavr
 - sunct0!unix1!lavr

Правая часть определяет адресата локального хоста, а левая - маршрут прохождения
по UUCP.
Если локальная сеть или компьютер имеет выход в мир через UUCP, то в этом
случае, почта передается с хоста на хост и тд и тп, предпоследним будет хост
содержащий локального пользователя и последним сам адресат, например:

 - sunct0!unix1!lavr

где lavr@unix1 - заданный адресат.

Combined-Style:

 - sunct0!unix1!dubna.su!lavr
 - sunct0!unix1!lavr@dubna.su
 - sunct0!lavr%unix1@dubna.su

Старайтесь не использовать смешанных форм когда в задании адреса используются
символы "!", "%" и "@", последний символ имеет наивысший приоритет при разборе
адреса и приведения его к канонической форме.
 Стандарт на адреса электронной почты, формат заголовков и тела письма - RFC822.

Примечание: существует пять первых доменов верхнего уровня (историческое
            начало) 

 - .gov - Government
 - .edu - Education
 - .com - Commercial
 - .mil - Military
 - .org - Organization
 
 был еще один временно:

 - .arpa - ARPA-Internet

однако было решение добавить домены первого уровня по признаку страны с
использованием двухбуквенного обозначения (географические домены), например:

 - .su  - Soviet Union
 - .ru  - Russian

и так называемые Multiorganizations - для организаций с огромной структурой.
 Когда ведение службы DNS стало невозможно без распределенной организации и
коммерческой выгоды, стали появляться дополнительные домены первого уровня,
.biz, .info и тд и тп, вплоть до доменов в национальных кодировках.

 2.1. MTA и SMTP.

Почта между компьютерами в сети или между доменами, локальными сетями передается
по протоколу SMTP (SIMPLE MAIL TRANSFER PROTOCOL/RFC821) так называемыми MTA
(Mail Transfer Agent) программами. Это транспортный уровень передачи электронной
почты. Протокол SMTP разработан давно и него есть соответствующие RFC в
соответствии и следуя которым должны быть написаны программы MTA. 
 RFC (Request For Comments) - это огромный набор документов содержащих описание 
протоколов, технологий и политики работы в Internet, постоянно обновляющийся и
расширяющийся по мере создания, разработки и внедрения новых протоколов и технологий и необходимый как для внутренних нужд Internet, так и для собдюдения и
поддержания единых стандартов необходимых для работы.
 Начало развития RFC было положено в 1969 году, для развития Internet (тогда еще
ARPANET), спецификации технологий и протоколов Internet, как определено
Internet Engineering Task Force (IETF) и ее руководящей группой  IESG, и
есть RFC.

В настоящее время существует достаточное количество известных и популлярных MTA
программ:

 - http://www.sendmail.org/     Sendmail
 - http://www.qmail.org/        Qmail
 - http://www.postfix.org/      Postfix
 - http://www.exim.org/         Exim
 - http://www.courier-mta.org/  Courier

В данном руководстве мы будем рассматривать в качестве MTA известную программу
Sendmail.

 В OS FreeBSD в качестве почтового транспорта, в системе по-умолчанию
используется программа sendmail. Разработчики OS FreeBSD стараются создать
максимум удобств для использования сложного программного обеспечения, в том
числе и для sendmail.
 Одним из таких удобств является создание достаточно удобного интерфеса
запуска-перезапуска, сборки конфигурационного файла sendmail.cf и сборки
и апдейта баз sendmail'а - файл /etc/mail/Makefile (начиная с release 4.3)
 Коротко рассмотрим как создать нужную конфигурацию sendmail.cf используя
препроцессор m4 с конфигурационным файлом для него.
 Сначала приведем общий алгоритм, а затем конкретные примеры и проблему с
которой я столкнулся уже при работе готового комплекса WebMail:

Вариант сборки sendmail.cf с использованием /etc/mail/Makefile:

- создаем файл конфигурации myconfig.mc или `hostname`.mc или копируем
  freebsd.mc в один из предыдущих и редактируем под себя.
  (пример см. в Варианте ручной сборке)

- указанный Makefile использует в качестве файла конфигурации:

  - файл заданный в переменной SENDMAIL_MC
    - переменная SENDMAIL_MC может быть определена:
      - в файле /etc/make.conf
      - в самом /etc/mail/Makefile

          SENDMAIL_MC=/etc/mail/myconfig.mc

  - если переменная SENDMAIL_MC заранее нигде не определена,
    в /etc/mail/Makefile будет создан шаблон `hostname`.mc на базе уже
    имеющегося в системе файла конфигурации /etc/mail/freebsd.mc

- cd /etc/mail; make stop; cp sendmail.cf sendmail.cf.last; make cf; make start
- смотрим сообщения об ошибках и стартанул ли сервис: ps -axuww | grep sendmail

[alone]~ > telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 Contact ESMTP Co. Antispam-MTA; Non-authorized relaying DENIED.
ehlo localhost
250-alone.dubna.ru Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-SIZE 1000000
250-DSN
250-ONEX
250-XUSR
250 HELP
quit
221 2.0.0 alone.dubna.ru closing connection
Connection closed by foreign host.
[alone]~ > 

Вариант ручной сборки sendmail.cf:

- создаем файл конфигурации myconfig.mc

--------------------------- example  myconfig.mc ------------------------------
divert(-1)
#
# Copyright (c) 1983 Eric P. Allman
# Copyright (c) 1988, 1993
#	The Regents of the University of California.  All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
#    must display the following acknowledgement:
#	This product includes software developed by the University of
#	California, Berkeley and its contributors.
# 4. Neither the name of the University nor the names of its contributors
#    may be used to endorse or promote products derived from this software
#    without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#
#  This is a generic configuration file for FreeBSD 4.X and later systems.
#  If you want to customize it, copy it to a name appropriate for your
#  environment and do the modifications there.
#
#  The best documentation for this .mc file is:
#  /usr/share/sendmail/cf/README or
#  /usr/src/contrib/sendmail/cf/README
#

dnl lavr: divert(-1) dont use perprocessor for this text
dnl       divert(0) use output/preprocessor
divert(0)
dnl lavr: VERSIONID - macro for SCCS or RCS version id
VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.10.2.11 2001/07/14 18:07:27 gshapiro Exp $')
dnl OSTYPE - use some default macro for this OS from cf/ostype
OSTYPE(freebsd4)
dnl lavr: use generic or your specific
DOMAIN(generic)

dnl Define ALL Maps, databases type see DATABASE DEFINITIONS src/README for
dnl requement compile options 

FEATURE(access_db, `hash -o /etc/mail/access')
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')

dnl Define to always add our domainname (don't allow name@localhost for local)
FEATURE(always_add_domain)

dnl USE BlackList /etc/mail/access - disable mail for users
FEATURE(blacklist_recipients)

dnl Disable UUCP
FEATURE(nouucp,reject)
dnl use this for procmail as LDA(mbox delivery), probably comment local_lmtp
FEATURE(local_lmtp)
dnl FEATURE(local_procmail)

dnl Masquarade Domain
dnl FEATURE(`masquerade_entire_domain')
dnl lavr: don't all our domains masquarade, only class{M} MASQUERADE_DOMAIN
dnl FEATURE(limited_masquerade)
dnl do envelope e-mail address for has chance to see it
dnl FEATURE(`masquerade_envelope')dnl
dnl lavr: don't masquerade_envelope some users
dnl EXPOSED_USER(`usernames')

dnl MASQUERADE_AS(`domainname')
dnl MASQUERADE_DOMAIN(`whichdomain')
dnl MASQUERADE_DOMAIN_FILE(/etc/mail/sendmail.cM)
dnl lavr: don't masquerade some hosts or domain
dnl MASQUERADE_EXCEPTION(`host.domain')

dnl see cf/README Relay and ANTI-SPAM sections
dnl FEATURE(relay_based_on_MX)
dnl FEATURE(relay_entire_domain)
FEATURE(relay_hosts_only)

dnl lavr: don't use this with full name userdb Andrey.Lavrentyev => lavr
dnl see also define(`LOCAL_RELAY', `mailer:hostname')
dnl          define(`MAIL_HUB', `mailer:hostname')
dnl FEATURE(stickyhost)

dnl Delay_all_checks see ANTI-SPAM CONFIGURATION CONTROL at cf/README
FEATURE(`delay_checks')

dnl lavr: welcome to Russian http://www.drbl.ofisp.org/
dnl maillist http://www.ofisp.org/antispam.html

dnl lavr, below cool links about alive anti-spam databases and it's compare
dnl http://www.sdsc.edu/~jeff/spam/Blacklists_Compared.html
dnl http://www.declude.com/JunkMail/Support/ip4rinfo.htm
dnl http://www.declude.com/JunkMail/Support/ip4r.htm

dnl USE Anti-Spam Databeses
dnl below use dnsbl with it's responds
FEATURE(dnsbl)

dnl Mail-Abuse request payment - not free
dnl Alternatively, you can provide your own rejection message for the RBL:
dnl FEATURE(dnsbl, `blackholes.mail-abuse.org', `"550 Mail from " $&{client_addr} " rejected, see http://mail-abuse.org/cgi-bin/lookup?" $&{client_addr}')

dnl Other DNS based black hole lists
dnl --------------------------------
dnl MAPS Relay Spam Stopper (RSS): http://mail-abuse.org/rss/
dnl FEATURE(dnsbl, `relays.mail-abuse.org', `"550 Mail from " $&{client_addr} " rejected; see http://mail-abuse.org/cgi-bin/nph-rss?" $&{client_addr}')

dnl MAPS Dial-up User List (DUL): http://maps.vix.com/dul/
dnl FEATURE(dnsbl, `dialups.mail-abuse.org', `"550 Mail from dial-up rejected; see http://mail-abuse.org/dul/enduser.htm"')

dnl Below some Free Anti-Spam Databases, please check it first/lavr
dnl ORDB Anti-Spam Database http://www.ordb.org/
FEATURE(`dnsbl', `relays.ordb.org', `Mail rejected - see http://ordb.org/')

dnl ORBZ Anti-Spam Database http://orbz.org/sysadmin-lightside.php
FEATURE(dnsbl,`inputs.orbz.org', `Input Mail rejected - see http://orbz.org/')
dnl uncomment below for filter output mail/lavr
dnl FEATURE(dnsbl,`outputs.orbz.org', `Output Mail rejected - see http://orbz.org/')

dnl RSL - old entries remove after 90 days/lavr http://relays.visi.com/
FEATURE(dnsbl,`relays.visi.com', `Mail rejected - see http://relays.visi.com/') 

dnl ABL - http://abl.v6net.org/
FEATURE(dnsbl,`spammers.v6net.org', `Mail rejected - see http://abl.v6net.org/')

dnl SPAMCOP - http://spamcop.net/bl.shtml
FEATURE(dnsbl,`bl.spamcop.net', `Spam blocked see: http://spamcop.net/bl.shtml?$&{client_addr}')

dnl Summit Open Source Group - http://www.2mbit.com/sbl.php
FEATURE(dnsbl, `blackholes.2mbit.com', `Blocked because of spam - see http://www.2mbit.com/whyblock.php)

dnl SPEWS - http://www.spews.org/ use OSIRUSOFT databases
dnl FEATURE(dnsbl, `spews.relays.osirusoft.com')

dnl Spamhaus - http://spamhaus.org/sbl/howtouse.html
dnl lavr: use osirusoft instead
dnl FEATURE(dnsbl, `sbl.spamhaus.org')
dnl FEATURE(dnsbl, `spamhaus.relays.osirusoft.com')

dnl DEWS - http://dews.qmail.org/ - QMail rblsmtpd
FEATURE(dnsbl, `dews.qmail.org')

dnl lavr: use this at 8.12.x RHSBL new feature
dnl RFC_Ignorant - http://www.rfc-ignorant.org/

dnl NJABL - http://njabl.org/use.html
FEATURE(dnsbl,`dnsbl.njabl.org',`Message from $&{client_addr} rejected - see http://njabl.org/')

dnl SpamBag - http://www.spambag.org/usage.html
FEATURE(dnsbl,`blacklist.spambag.org', `Mail rejected - see http://www.spambag.org/')

dnl Wirehub - http://basic.wirehub.nl/blackholes.html
FEATURE(dnsbl,dynablock.wirehub.net', `Mail rejected - see http://basic.wirehub.nl/')

dnl DNSBL - http://www.dnsbl.org/ - DNSbl
FEATURE(dnsbl,`ex.dnsbl.org', `Mail rejected - see http://www.dnsbl.org/')

dnl Unknown/lavr compu.net - has a update a few times per day/ please check it first
dnl FEATURE(`dnsbl', `flowgoaway.com')dnl
dnl FEATURE(`dnsbl', `blackhole.compu.net')dnl
dnl FEATURE(`dnsbl', `pm0-no-more.compu.net')dnl
dnl FEATURE(`dnsbl', `blackholes.intersil.net')dnl

dnl OSIRUSOFT - http://relays.osirusoft.com/ - union anti-spam databases
dnl Five in One, see below
FEATURE(dnsbl, `relays.osirusoft.com', `Rejected - see http://relays.osirusoft.com/')
dnl FEATURE(`dnsbl', `inputs.relays.osirusoft.com')
dnl FEATURE(`dnsbl', `dialups.relays.OsiruSoft.com')
dnl FEATURE(`dnsbl', `spamsites.relays.OsiruSoft.com')
dnl FEATURE(`dnsbl', `spamhaus.relays.OsiruSoft.com')
dnl FEATURE(`dnsbl', `spews.relays.OsiruSoft.com')

dnl Dialup users should uncomment and define this appropriately
dnl lavr: use this for redirect all mail-stream to MailHub
dnl define(`SMART_HOST', `your.isp.mail.server')

dnl Uncomment the first line to change the location of the default
dnl /etc/mail/local-host-names and comment out the second line.
dnl define(`confCW_FILE', `-o /etc/mail/sendmail.cw')
define(`confCW_FILE', `-o /etc/mail/local-host-names')

dnl Uncomment both of the following lines to listen on IPv6 as well as IPv4
dnl DAEMON_OPTIONS(`Name=IPv4, Family=inet')
dnl DAEMON_OPTIONS(`Name=IPv6, Family=inet6')

dnl lavr: use MSA or not
dnl lavr: default - port=smtp[21], name=MTA
dnl lavr: for msa - port=587, name=MSA, M=E (disable ETRN)
dnl FEATURE(`no_default_msa')
dnl DAEMON_OPTIONS(`Port=smtp, Name=MTA')
dnl DAEMON_OPTIONS(`Port=587, Name=MSA, M=E')
dnl lavr: change smtp-port listener from 25 to 1025 non-priv port
dnl DAEMON_OPTIONS(`Port=1025, Name=MTA')

dnl max message size = 1.5MB
define(`confMAX_MESSAGE_SIZE', `1500000')dnl
dnl max headers length
define(`confMAX_HEADERS_LENGTH',16384)
dnl max mime header length
define(`confMAX_MIME_HEADER_LENGTH', `256/128')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
dnl don't allow spam as big rcpts list, no more than 25 recepients
define(`confMAX_RCPTS_PER_MESSAGE', `25')
dnl don't allow vrfy,etrn,expn
dnl nobodyreturn - use it for unwant full body-letter from error/bonuce mail
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy,noetrn,nobodyreturn')
define(`ALIAS_FILE', `/etc/mail/aliases,/etc/mail/majordomo.aliases')
define(`confSMTP_LOGIN_MSG',`Antispam-MTA; "Non-authorized relaying DENIED." $b')
define(`confSMTP_MAILER', `smtp8')

dnl lavr: connections and daemon options
dnl lavr: how many max daemon allowed
dnl define(`confMAX_DAEMON_CHILDREN', `80')dnl
dnl lavr: max number connections per second/if more than delay
define(`confCONNECTION_RATE_THROTTLE', `2')dnl
dnl lavr: values below for hard-loaded servers with other services
dnl default confQUEUE_LA=8/confREFUSE_LA=12
dnl lavr: confQUEUE_LA - load average at which we'll queue messages
dnl define(`confQUEUE_LA', `70')dnl
dnl lavr: confREFUSE_LA - load average at which we'll refuse SMTP connect
dnl define(`confREFUSE_LA', `40')dnl
define(`confMAX_HOP',25)
dnl lavr: send warning if normal message can't be delivery 1day
define(`confTO_QUEUEWARN', `1d')dnl
dnl lavr: send warning if urgent message can't be delivery 4hour
define(`confTO_QUEUEWARN_URGENT', `4h')dnl
dnl define(`confTO_QUEUEWARN_NORMAL', `1d')dnl
dnl define(`confTO_QUEUEWARN_NONURGENT', `1d')dnl
define(`confTO_QUEUERETURN', `5d')dnl
define(`confTO_QUEUERETURN_URGENT', `2d')dnl
dnl lavr: some repeat
define(`confDOUBLE_BOUNCE_ADDRESS',postmaster)dnl
define(`confCOPY_ERRORS_TO',postmaster)dnl
dnl lavr: uncomment below for activate return-receipt-to header
dnl define(`confRRT_IMPLIES_DSN',`True')

MAILER(local)
MAILER(smtp)
dnl use this to allow delivery messages vi procmail script /etc/procmailrcs/domain-script 
dnl MAILER(procmail)
---------------------------- end of myconfig.mc -------------------------------

- создаем файл sendmail.cf

m4 -D_CF_DIR_=/path/sendmail/cf/ /path/sendmail/cf/m4/cf.m4 myconfig.mc > sendmail.cf 

можно воспользоваться Makefile'ом от FreeBSD, предварительно поправив его
под себя, свою систему и директорию с актуальным /path/sendmail/cf и создав
/etc/mail куда его и положить:
Sendmail Makefile from FreeBSD

- завершаем работу sendmail

  kill -TERM SENDMAIL_PID

- производим замену рабочего sendmail.cf на новый

  mv sendmail.cf sendmail.cf.last; mv sendmail.cf.new sendmail.cf

- стартуем sendmail с новой конфигурацией

  /path/sendmail -bd -q30m

- смотрим сообщения и проверяем в случае удачного запуска:

[unix1]~ > telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 unix1.jinr.dubna.su ESMTP Sendmail 8.11.6/8.11.2; Tue, 26 Mar 2002 16:42:29 +0300 (MSK)
help
214-2.0.0 This is sendmail version 8.11.6
214-2.0.0 Topics:
214-2.0.0       HELO    EHLO    MAIL    RCPT    DATA
214-2.0.0       RSET    NOOP    QUIT    HELP    VRFY
214-2.0.0       EXPN    VERB    ETRN    DSN     AUTH
214-2.0.0       STARTTLS
214-2.0.0 For more info use "HELP ".
214-2.0.0 To report bugs in the implementation send email to
214-2.0.0       sendmail-bugs@sendmail.org.
214-2.0.0 For local information send email to Postmaster at your site.
214 2.0.0 End of HELP info
help ehlo
214-2.0.0 EHLO 
214-2.0.0       Introduce yourself, and request extended SMTP mode.
214-2.0.0 Possible replies include:
214-2.0.0       SEND            Send as mail                    [RFC821]
214-2.0.0       SOML            Send as mail or terminal        [RFC821]
214-2.0.0       SAML            Send as mail and terminal       [RFC821]
214-2.0.0       EXPN            Expand the mailing list         [RFC821]
214-2.0.0       HELP            Supply helpful information      [RFC821]
214-2.0.0       TURN            Turn the operation around       [RFC821]
214-2.0.0       8BITMIME        Use 8-bit data                  [RFC1652]
214-2.0.0       SIZE            Message size declaration        [RFC1870]
214-2.0.0       VERB            Verbose                         [Allman]
214-2.0.0       ONEX            One message transaction only    [Allman]
214-2.0.0       CHUNKING        Chunking                        [RFC1830]
214-2.0.0       BINARYMIME      Binary MIME                     [RFC1830]
214-2.0.0       PIPELINING      Command Pipelining              [RFC1854]
214-2.0.0       DSN             Delivery Status Notification    [RFC1891]
214-2.0.0       ETRN            Remote Message Queue Starting   [RFC1985]
214-2.0.0       STARTTLS        Secure SMTP                     [RFC2487]
214-2.0.0       AUTH            Authentication                  [RFC2554]
214-2.0.0       XUSR            Initial (user) submission       [Allman]
214-2.0.0       ENHANCEDSTATUSCODES     Enhanced status codes   [RFC2034]
214 2.0.0 End of HELP info
vrfy lavr@unix1.jinr.ru
252 2.5.2 Cannot VRFY user; try RCPT to attempt delivery (or try finger)
mail from: lala@sun.com
250 2.1.0 lala@sun.com... Sender ok
rcpt to: lavr@unix1.jinr.ru
250 2.1.5 lavr@unix1.jinr.ru... Recipient ok
rset
250 2.0.0 Reset state
quit
221 2.0.0 unix1.jinr.dubna.su closing connection
Connection closed by foreign host.
[unix1]~ >

в данном примере мы видим стандартное приглашение[prompt] sendmail'а:

220 unix1.jinr.dubna.su ESMTP Sendmail 8.11.6/8.11.2; Tue, 26 Mar 2002 16:42:29 +0300 (MSK)

которое можем изменить непосредственно в sendmail.cf:

# SMTP initial login message (old $e macro)
#O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
O SmtpGreetingMessage=Antispam-MTA; "Non-authorized relaying DENIED."

Кроме того полезно проверить работу выбранного метода Relay, access map
и local-host-names с relay-domains.
 
 2.2. MUA и POP3/IMAP.

В отличие от MTA - транспортная часть почтовой системы, MUA - это интерфейс для
пользователя, позволяющий читать, сохранять, удалять приходящие письма и
формировать и отправлять по назначению собственную корреспонденцию адресатам.
 Разнообразие почтовых программ (MUA) может быть сколь угодно велико, но все
они должны выполнять свое назначение, которое описано выше.
 MUA или почтовые программы, в обиходе почтовики, должны поддерживать протоколы
POP3 и/или IMAP, в идеальном варианте и тот и другой, для работы с приходящей
почтовой корреспонденцией - письмами и протокол SMTP для отправки своих
писем.
 Как и в случае программ MTA, программы MUA должны быть написаны в соответствии
и следуя разработанным стандартам описанных в необходимых RFC.

Ниже приведены лишь некоторые RFC по протоколам и авторизации POP3 и IMAP:

POP3:
-----
RFC0918
RFC1081
RFC1082
RFC1225
RFC1460
RFC1725 "Post Office Protocol - Version 3"
RFC1939

POP3-AUTH:
----------
RFC1734 "POP3 AUTHentication command"

IMAP:
-----
RFC1064 - "INTERACTIVE MAIL ACCESS PROTOCOL - VERSION 2"
RFC1176 - "INTERACTIVE MAIL ACCESS PROTOCOL - VERSION 2"
RFC1730 - "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4"
RFC1731 - "IMAP4 Authentication mechanisms"
RFC2195 - "IMAP/POP AUTHorize Extension for Simple Challenge/Response"
RFC2060 - "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1"
RFC2062 - "Internet Message Access Protocol - Obsolete Syntax"

Найти эти и другие RFC можно по адресу:

	http://www.ripn.net:8080/nic/rfc/

 2.3. Известные MTA/MUA агенты и POP3/IMAP пакеты.

Ниже перечислены наиболее популлярные MUA - почтовые программы:

1) MSDOS

  - ftp://ftp.kiae.su/pub/msdos/news-mail/dml207b7.exe - DMail
  - ftp://ftp.kiae.su/pub/msdos/news-mail/pine385.zip - Pine
  - ftp://ftp.kiae.su/pub/msdos/relcom/bml141b.zip - BML
  - ftp://ftp.kiae.su/pub/msdos/relcom/mail2/ - MAIL2
  - ftp://ftp.kiae.su/pub/msdos/relcom/ache/uupc7.03 - DML/BML
  - http://www.washington.edu/pine/getpine/pcpine.html - Pine Home

2) Windows

  - Outlook Express (программа поставляемая как часть дистрибутива MS Windows)
  - Netscape Messenger (часть броузера Netscape Communicator)
    http://www.netscape.com/
    http://home.netscape.com/download/index.html - download
    ftp://ftp.netscape.com/pub/communicator/
    новый проект Netscape6 ftp://ftp.netscape.com/pub/netscape6/

  - Mozilla
    http://www.mozilla.org/releases/
    http://ftp.mozilla.org/pub/mozilla/releases/mozilla0.9.8/

  - The Bat! http://www.ritlabs.com/ 

  - http://www.washington.edu/pine/getpine/pcpine.html - Pine Home

3) Unix

  - http://www.washington.edu/pine/ - Pine (POP3/IMAP/SSL) 
  - http://www.mutt.org/ - Mutt (POP3/IMAP/SSL)
    http://www.mutt.org.ua/download/ - Russian patches для Mutt
  - http://www.ozone.fmi.fi/KEH/ - Elm+ME (POP3/IMAP/SSL)

Наиболее известные POP3/IMAP демоны:

3. Наиболее известные системы WebMail.

4. Пример сборки, установки и настройки WebMail интерфейса на базе TWIG в OS FreeBSD.

 4.1. Коротко о сборке sendmail и sendmail.cf во FreeBSD.
 4.2. Установка и настройка POP3/IMAP на базе Вашингтонского IMAP-UW.

5. Установка и настройка WWW Сервера на базе Apache.

 5.1. Установка и настройка Apache с поддержкой SSL.
 5.2. Установка дополнительных Apache DSO модулей (PHP) необходимых для WebMail.

6. Ссылки.

7. Благодарности.