E-mail через UUCP: Профессиональное решение для пользователей dialup

ArticleCategory: [Do not translate this]

System Administration

AuthorImage:[Do not translate this]

[Photo of the Author]

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]

[uucp]

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):
[Частная почтовая система, поключенная через
dialup]


Такой вид почтового сервера может подойти для домашнего применения и быть очень выгодным по цене для небольшой компании. Вы можете выделить учетные записи 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. Джо может сформировать любое количество пользователей: [email protected], [email protected], [email protected] ... Вся эта почта направляется Джо. Таким образом, Вы получаете почтовый сервер под 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 и доставляющая ее Вашей почтовой системе.

Для создания учетной записи Вашему провайдеру потребуется следующая информация:
Вам от провайдера нужно:

Пошаговое тестирование Вашей учетной записи

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. Вам надо создать и/или отредактировать следующие файлы: Все эти файлы должны принадлежать пользователю 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 [email protected]
Это послание не будет отправлено немедленно. Вместо этого оно будет поставлено в очередь системы UUCP. Вы можете его увидеть:
uustat -a
uustat ответит:
mfic.CRJjd4uAAAPs mfic joe 07-24 20:19 Executing rmail [email protected]
(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.