E-mail через UUCP: Профессиональное решение для
пользователей dialup
ArticleCategory: [Do not translate this]
System Administration
AuthorImage:[Do not translate this]
TranslationInfo:[Do not translate this]
original in en Guido Socher
en to ru Eugene S. Saenko
AboutTheAuthor:[Translate the paragraph below]
Гвидо (Guido), использует UUCP уже много лет и считает, что это -
лучший способ связи почтовой системы Вашего компьютера с Интернет.
Abstract:[Translate the paragraph below]
UUCP - один из очень старых протоколов Интернет. Во многих
случаях он заменен более современными протоколами, но он остается
одним из лучших решений для обмена почтой с сайтами по dialup. К
сожалению, многие, выходящие в Интернет из дому через dialup,
незнакомы с большими потенциальными возможностями UUCP и не
пользуются этой службой. В результате многие провайдеры в наши дни
не предлагают UUCP.
ArticleIllustration:[Do not try to translate this]
ArticleBody:[Translate everything below]
Введение
UUCP - очень старый протокол, первоначально предназначенный для
обмена любыми файлами между Unix-системами. Отсюда и название: "Unix
to Unix Copy". В те времена компьютерные системы не были постоянно
подключены к сети. Вместо этого для обмена данными использовались
dialup-соединения через модемы через регулярные интервалы времени.
Чтобы скопировать файл mynotes.txt на удаленную систему, называемую,
скажем, "mars" нужно было воспользоваться командой:
uucp mynotes.txt mars!~/mynotes.txt
При этом данные копировались в "spool directory" (каталог спулинга), а
затем, при установлении dialup-соединения с этим сайтом, данные
копировались физически.
Сегодня вряд-ли UUCP где-либо используется таким образом. Да и сейчас
существуют более современные протоколы для копирования файлов с одной
компьютерной системы на другую, такие, как TCP/IP и scp.
UUCP может гораздо больше. Он позволяет выполнить на удаленной системе
ограниченное множество команд. Чтобы послать команде "rnews" на
удаленную систему "mars" данные из stdin нужно подать команду:
cat somedata.txt | uux - mars!rnews
Опять же, команда rnews будет выполнена на удаленной системе не
немедленно, а позже, когда будет установлено dialup-соединение с системой
"mars". А до тех пор команда будет храниться в локальном каталоге
спулинга.
Какое это имеет отношение к e-mail?
E-mail - приложение, для которого небольшая задержка в пересылке данных
не имеет большого значения. Обычно Вы просматриваете свою почту, пишете
ответы друзьям и "отсылаете" их. Но когда Вы отсылаете ответ, Вам не
нужно, чтобы окно Вашего почтового приложения было открыто все время,
пока не будет установлена связь с провайдером и отправлен ответ. Вы
хотите "отослать" сообщение и закрыть окно. Не имеет большого значения,
будет ли ответ отправлен немедленно или несколько позже.
Это как раз такое приложение, которое можно надежно реализовать с помощью
UUCP.
Ваша собственная почтовая система
UUCP - гибкий протокол. Вы можете настроить его так, что у Вас в
компьютерной сети будет собственный почтовый сервер. Ваш компьютер с
Linux может играть роль почтового сервера для всех типов компьютеров и
операционных систем в Вашей локальной сети (LAN - Local Area Network):
Такой вид почтового сервера может подойти для домашнего применения и быть
очень выгодным по цене для небольшой компании. Вы можете выделить учетные
записи e-mail для любого количества пользователей, но Вам необходимо
подключение по dialup к провайдеру. Компания, вероятно будет
устанавливать такое соединение периодически, например, раз в час.
Отдельные пользователи будут устанавливать такое соединение, когда им
требуется соединение с Интернет по другим причинам.
Итак: E-mail через UUCP не является анахронизмом. Это - очень эффективное
и выгодное применение UUCP.
Как это работает?
При использовании UUCP Вы получаете от провайдера собственный MX домен
(MX=Mail Exchanger, доменная часть адреса e-mail). Так, если домашняя
страница Вашего провайдера имеет адрес www.my-friendly-isp.com, он может
дать Джо Миллеру (Joe Miller) домен miller.my-friendly-isp.com. Вся
почта на этот домен будет пересылаться на почтовый сервер Джо Миллера с
помощью UUCP. Джо может сформировать любое количество пользователей:
joe@miller.my-friendly-isp.com, diana@miller.my-friendly-isp.com,
frank@miller.my-friendly-isp.com ...
Вся эта почта направляется Джо. Таким образом, Вы получаете почтовый сервер
под Linux, который может обслуживать различные протоколы, такие, как pop,
imap, nfs or mail box прямо в локальной файловой системе ... более того,
нет никаких ограничений на тип операционной системы или почтовых клиентов,
с помощью которых пользователи получают доступ к своей почте.
UUCP - это самостоятельный протокол, который можно использовать
непосредственно на аппаратном уровне (то есть на модемной линии без
использования протокола ppp) или поверх TCP/IP и это дает новые
возможности:
У Вас может быть основной провайдер с хорошим магистральным (backbone)
подключением (скажем, в Амстердаме). Вы можете получать доступ в Интернет
у случайного провайдера со слабым местным подключением. Поскольку UUCP
работает поверх TCP/IP, физическое расположение Вашего провайдера E-mail/UUCP
не имеет значения. Доступ к нему через Интернет можно получить из любой
точки мира.
Установка
В ссостав большинства дистрибутивов Linux входит пакет uucp, содержащий,
обычно, Tailer UUCP. Если его нет на Ваших дисках, Вы можете его найти на:
www.airs.com/ian
Кроме пакета UUCP Вам потребуется почтовая система, поддерживающая UUCP.
В этой статье я буду описывать sendmail, но большинство других систем,
также, могут поддерживать UUCP. Почтовая система, поддерживающая UUCP
должна содержать в rpm или deb пакете команду rmail.
Почта отправляется на Вашу систему с помощью удаленного выполнения команд,
как в примере с uux/rnews, описанном выше. rmail - команда, принимающая
почту через "туннель (pipe)" UUCP и доставляющая ее Вашей почтовой
системе.
Для создания учетной записи Вашему провайдеру потребуется следующая
информация:
- Имя MX-домена, который Вы хотели бы иметь, например,
miller.my-friendly-isp.com
- Имя учетной записи (login) для соединения UUCP
- Пароль для соединения UUCP
- Имя Вашей системы UUCP. Короткая строка, например, имя Вашего
компьютера.
- Контакт для административных вопросов и почты от провайдера (обычно
postmaster)
- UUCP поверх IP? Отвечайте "да" и не связывайтесь с провайдерами,
которые этого не предлагают. Вам нужен E-mail поверх UUCP и UUCP
поверх IP.
Вам от провайдера нужно:
- Доменное имя сервера, с которым Вы будете связываться по UUCP. Это
может быть что-то вроде uucp.my-friendly-isp.com
- Имя его UUCP системы
Пошаговое тестирование Вашей учетной записи
UUCP поверх TCP/IP использует TCP порт 540 и Вы, таким образом, легко
проверить Вашу учетную запись до того, как займетесь настройкой своей
UUCP системы. Таким образом Вы сможете убедиться, что Ваш провайдер не
ошибся и дал Вам правильные ID и пароль. Введите команду:
telnet uucp.my-friendly-isp.com 540
Вы должны получить в ответ что-то вроде:
Trying 1.2.3.42...
Connected to uucp.my-friendly-isp.com
Escape character is '^]'.
login:
Введите логин и пароль:
Trying 1.2.3.42...
Connected to uucp.my-friendly-isp.com
Escape character is '^]'.
login: linux
Password: tux.1234
Shere=mfic
После успешного логирования Вам ответят: "Shere", (сокращение от
"Система готова") и именем удаленной системы (сверьте с данными,
предоставленными Вашим провайдером).
Чтобы завершить соединение, воспользуйтесь crtl-] и ответьте "q" в ответ
на приглашение telnet:
^]
telnet> q
Connection closed.
Теперь Вы знаете, что Ваша учетная запись настроена правильно.
Настройка Вашей системы UUCP
Чтобы получать (а затем и отправлять) почту через UUCP Вам надо внести
правильные данные в файлы конфигурации UUCP. Эти файлы обычно расположены
в /etc/uucp. Вам надо создать и/или отредактировать следующие файлы:
- call -- он содержит логин/пароль
- sys -- в этом файле определяется, как получить доступ к удаленной
системе. т.е. Вы настраиваете его на использование TCP/IP
- port -- для tcp соединений используется исключительно порт 540.
- config -- указывает на файл конфигурации
Все эти файлы должны принадлежать пользователю uucp и группе uucp. Файл
call не должен быть доступен всем (chmod 640 call). Файлы протоколов
обычно пишутся в /var/log/uucp/. Каталог /var/spool/uucp/
должен содержать каталог с именем удаленной системы. Убедитесь, что
пользователь uucp имеет право записи в обоих этих каталогах.
call
# call file
# Формат такой: имя-удаленной-системы логин пароль
mfic linux tux.1234
port
# port file
# Здесь ничего не надо менять
type tcp
port tcp
service 540
sys
# sys file
# информация об удаленной системе
# имя системы Вашего провайдера:
system mfic
# сервер Вашего провайдера:
address uucp.my-friendly-isp.com
# не меняйте следующие 3 строки, подробности см. в документации
# по Tailer UUCP
time Any 2
port tcp
chat-timeout 60
# разрешенные команды:
commands rmail
# пароль и имя пользователя взять в файле call:
call-login *
call-password *
# не меняйте следующую строку:
chat ogin: \L assword: \P
#
config
# Файл config задает пути и имена
# других файлов и каталогов, а также имя
# Вашей системы.
# Имя Вашей системы:
nodename oblelix
# максимальное количество запросов от других систем, выполняемых
# параллельно:
max-uuxqts 2
# Каталог спулинга UUCP
spool /var/spool/uucp
# Остальные поля обычно уже заполнены
# по умолчанию:
# pubdir /var/spool/uucppublic
# logfile /var/log/uucp/Log
# statfile /var/log/uucp/Stats
# debugfile /var/log/uucp/Debug
# callfile /etc/uucp/call
# ....
После записи конфигурационных файлов запустите команду "uuchk". Она,
скорее всего, находится в каталоге: /usr/sbin/uuchk
В ответ Вы получите свою конфигурацию, включая некоторые значения по
умолчанию, которые Вы не устанавливали. Имя сервера Вашего провайдера, в
нашем примере uucp.my-friendly-isp.com, появляется под именем "Номер
телефона":
Phone number uucp.my-friendly-isp.com
Это странно, но для UUCP поверх TCP/IP правильно. Обязательно убедитесь,
что все каталоги, log-файлы и файлы отладки расположены правильно и
принадлежат пользователю uucp.
Теперь Вы должны иметь возможность получать почту через UUCP, но
Вашему локальному мейлеру (MTA=mail transport agent) все еще надо дать
знать, что ему позволено обслуживать почту в домене, зарегистрированном
Вашим провайдером. В нашем случае - это домен miller.my-friendly-isp.com.
Конфигурация этого домена зависит от Вашего MTA. Для sendmail Вы должны
записать miller.my-friendly-isp.com на отдельной строке в файле
/etc/sendmail.cw:
# sendmail.cw определяет домен, в котором обслуживается почта
miller.my-friendly-isp.com
Теперь мы готовы проверить прием e-mail через UUCP. Отправка почты пока
работать не будет, поскольку sendmail еще не полностью сконфигурирован.
Запустите
/usr/sbin/uucico -x 11 -S mfic
mfic - это системное имя UUCP для my-friendly-isp.com.
Откройте второе терминальное окно и проверьте результат командой
"tail -f /var/log/uucp/Debug".
"-x 11" определяет высший уровень отладки, его стоит использовать только
во время тестирования. Вы увидите все подробности UUCP. Проверьте, нет ли
каких-либо ошибок. Если в конце Вы увидите что-то вроде
uucico mfic - (2001-06-22 20:20:57.73 1020) Call complete (31 seconds 42835
bytes 1381 bps)
значит все работает. Поздравляю!
Выполните команду "uulog". Она выведет более сжатое сообщение о почте,
полученной через UUCP/rmail.
Настройка sendmail для отправки e-mail через UUCP
Sendmail использует систему настройки, основанную на препроцессоре m4.
Другие почтовые системы, такие как postfix используют более ясные
конфигурационные файлы и их можно без проблем редактировать напрямую. Я
использую sendmail и описываю здесь собственный опыт работы с этой
программой. Вы можете добавить информацию о других MTA на странице
обсуждения ниже. По-моему для postfix надо только отредактировать
transport/transport.db и определить uucp в master.cf и это, кажется, все,
но у меня нет большого опыта работы с postfix.
Система конфигурации m4 может быть не включена в пакет sendmail.
Просмотрите диски своего дистрибутива. Вам может потребоваться установить
пакет, носящий имя что-то вроде "sendmail-cf".
Создайте в каталоге sendmail (вероятно /usr/lib/sendmail-cf/cf) новый
файл sendmail-uucp.mc:
#divert(-1)
# `Эта конфигурация отправляет исходящую почту через uucp с помощью
# /usr/bin/uux
# чтобы сгенерировать файл sendmail.cf из этого файла .mc воспользуйтесь
# исходниками sendmail
# и запустите m4 thisfile.mc > sendmail.cf.'
divert(0)
include(`../m4/cf.m4')
VERSIONID(`UUCP, Jan 28 2001, without DNS')
undefine(`BITNET_RELAY')
undefine(`DECNET_RELAY')
undefine(`UUCP_RELAY')
OSTYPE(`linux')
MASQUERADE_AS(miller.my-friendly-isp.com)
MASQUERADE_DOMAIN(localdomain)
MASQUERADE_DOMAIN(localhost)
# ` здесь добавьте любые локальные имена хостов:'
MASQUERADE_DOMAIN(philosophus)
# ` требуется, если Вы используете несуществующий локальный домен: '
FEATURE(`masquerade_envelope')
FEATURE(always_add_domain)
# ` прочесть разрешенные домены из файла cw: '
FEATURE(use_cw_file)
FEATURE(local_procmail)
# `важно для uucp:'
FEATURE(accept_unresolvable_domains)dnl
# `the /etc/passwd entry: mail:*:8:12:mail:/var/spool/mail:'
define(`confDEF_USER_ID',``8:12'')
define(`confSAFE_QUEUE',`True')
define(`confDELIVERY_MODE',`background')dnl
# 'замените mfic именем UUCP системы Вашего провайдера:'
define(`SMART_HOST',uucp-uudom:mfic)dnl
define(`confSERVICE_SWITCH_FILE',/etc/service.switch)dnl
define(`confHOSTS_FILE',/etc/hosts)dnl
define(`UUCP_MAILER_MAX',1024000)dnl
MAILER(procmail)dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(uucp)dnl
Отредактируйте этот файл в соответствии с Вашими данными и откомпилируйте
его командой:
m4 sendmail-uucp.mc > sendmail.cf
Скопируйте файл sendmail.cf в каталог /etc и перезапустите sendmail:
/etc/rc.d/init.d/sendmail restart
Этот путь скрипта инициализации справедлив для redhat/mandrake. Для Suse,
Debian и др. он будет другим...
В файле /etc/service.switch Вы должны указать:
hosts files
aliases files
Теперь отправим кому-нибудь E-mail. Это можно сделать с помощью Вашей
любимой программы-мейлера или непосредственно из командной строки unix:
echo "Привет, Джон, это проба..." | Mail john@somewhere.org
Это послание не будет отправлено немедленно. Вместо этого оно будет
поставлено в очередь системы UUCP. Вы можете его увидеть:
uustat -a
uustat ответит:
mfic.CRJjd4uAAAPs mfic joe 07-24 20:19 Executing rmail john@somewhere.org
(sending 50 bytes)
Затем дадим команду:
/usr/sbin/uucico -x 11 -S mfic
Здесь mfic - снова имя системы UUCP моего my-friendly-isp.com.
Теперь Вы можете посмотреть отладочный файл и проследить, как
отправляется почта.
Полностью автоматически
Создадим скрипт /usr/bin/uumail:
#!/bin/sh
hostn=uucp.my-friendly-isp.com
# сначала проверим, что сервер провайдера доступен.
# Для этого нужна свежая версия ping, в которой можно
# задать таймаут:
if ping -w 3 -qn -c 1 $hostn > /dev/null ; then
/usr/sbin/uucico -S mfic
#sleep 1
#uulog -s mfic -5
else
echo "ERROR: $hostn is down"
exit 1
fi
Сделаем скрипт исполняемым с помощью команды "chmod 755 /usr/bin/uumail"
и запустим его вручную, чтобы убедиться, что он работает.
Для автоматической доставки почты каждый раз, когда Вы входите в онлайн
просто добавьте строку /usr/bin/uumail к /etc/ppp/ip-up.
Ok, вот и все. Ваша почтовая система работает.
Что еще сделать
Почтовая система полностью сконфигуриррована. Все пользователи
(/etc/passwd, команда adduser) автоматически смогут отправлять и получать
почту. Почта будет храниться в обычных каталогах спулинга в каталоге
/var/spool/mail и ее можно прочесть локально. Если Вы хотите, чтобы
пользователи могли получать почту по протоколам pop3 или imap, Вы должны
установить пакет, который обычно называется "imap" и содержит демоны
/usr/sbin/imapd и /usr/sbin/ipop3d
Их можно запустить, раскомментировав в файле /etc/inetd.conf строки:
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
imap stream tcp nowait root /usr/sbin/tcpd imapd
Если у Вас xinetd, Вам необходимо создать соответствующий
конфигурационный файл для этой службы (см.также статью в LinuxFocus
article 175 на эту тему).
Не забудьте, также, разрешить доступ в файле /etc/hosts.allow, если
пользователи с других компьютеров Вашей локальной сети должны иметь
доступ к почте:
# hosts.allow , tcp wrapper config file
# все имеют доступ к imap:
imapd: ALL
# pop3 доступен только с 2 компьютеров:
ipop3d: 10.0.0.1, 10.0.0.2, 127.0.0.1
Поиск провайдера
Найти хорошего надежного провайдера UUCP иногда нелегко, особенно, если
учесть, что большинство провайдеров ориентированы на Windows (я не смог
найти адекватного перевода для "target at Mr. Noclue Windowspreinstalled"
-- прим. переводчика).
Я знаю двух неплохих провайдеров в Германии, которые точно предлагают
E-mail через UUCP:
Оба из них - организации, и, для того, чтобы пользоваться службой, Вы
вступаете в организацию. Цена приблизительно от 11 до 20 евро в месяц.
Мы в LinuxFocus.org тоже можем предоставлять e-mail через UUCP
ограниченному количеству дружественных нам фанатов Linux, если Вы
вступите в нашу организацию, поддерживаете нас финансово и/или регулярно
с нами сотрудничаете. Свяжитесь со мной, если это заинтересует Вас.
Хороший способ найти подходящего провайдера - поиск с помощью Google или
другой поисковой машины. Не очень крупные провайдеры, ориентированные на
пользователя с большой долей вероятности в качестве услуги предлагают
e-mail через UUCP.