.hosted-domain.tld будет пересылаться через UUCP. Для доменов hosted-domain.tld и .hosted-domain.tld будет применяться локальная доставка.
Теперь уведомим Postfix о произведенных изменениях:
$ postmap /usr/local/etc/postfix/transport && postfix reload
Создаем файл /usr/local/etc/postfix/virtual, содержащий:
#################### This is POSTFIX 'virtual' file ##############################
# Every time this file is modified it need a 'postmap' and postfix needs a reload#
##################################################################################
########### hosted-domain.tld virtual users table ##############
postmaster@hosted-domain.tld postmaster@localdomain.local
virtualuser1@hosted-domain.tld localuser1@localdomain.local
Теперь уведомим Postfix о произведенных изменениях:
$ postmap /usr/local/etc/postfix/virtual && postfix reload
Создаем /usr/local/etc/postfix/mynetworks, содержащий:
#################### This is POSTFIX 'mynetworks' file ###########################
# Every time this file is modified it need a 'postmap' and postfix needs a reload#
##################################################################################
xxx.xxx.xxx.xxx/xx OK # where xxx.xxx.xxx.xxx is your local private IP address
# and /xx is the mask for your networks for exple
# 192.168.1.1/24
xxx.xxx.xxx.xxx OK # single host for exemple 192.168.2.1
127.0.0.0/8 OK # this is localhost interface(s)
Это список IP адресов, которым доставка почты осуществляется через SMTP, перед тем как поставить письма в очередь на отправку почты через UUCP.
Возможно вы захотите изменить файл canonical, для того, чтобы изменять отправителя при отправке почты с локальной машины. Будет это выглядеть примерно так:
#################" This is POSTFIX 'canonical' file ##############################
# Every time this file is modified it need a 'postmap' and postfix needs a reload#
##################################################################################
@localdomain.local @hosted-domain.tld
Для вступления изменений в силу:
$ postfix stop && postfix start
В случае, если вы модифицируете псевдонимы(aliases), хорошей идеей будет выполнить команды newaliases и затем postfix reload. Это также можно сделать, используя простейший скрипт:
#! /bin/sh
postmap virtual
postmap transport
postmap mynetworks
postmap relays_domains
postmap access
postmap canonical
newaliases
postfix reload
Используйте postcheck для проверки корректности конфигурации.
Конфигурирование клиента UUCP
Для настройки UUCP у клиента необходимо создать несколько файлов в каталоге /etc/uucp. Начнем мы с /etc/uucp/sys, содержащего:
###### this is the 'sys' file for Taylor UUCP ######
system server
alias server-ssh
call-login *
call-password *
time any
address server.domain.tld
port ssh
protocol t
remote-send /var/spool/uucppublic
remote-receive /var/spool/uucppublic
Затем создаем /etc/uucp/port:
###### this is the 'port' file for Taylor UUCP ######
port ssh
type pipe
command /usr/bin/ssh -x -o batchmode=yes server.domain.tld
Теперь /etc/uucp/call:
###### this is the 'call' file for Taylor UUCP ######
server login password
В заключение устанавливаем права доступа к файлам. SSH очень критичен в этих вопросах.
% cd /var/spool/ && chmod go-w uucp
% cd /etc/uucp && chown root:uucp * && chmod 550 *
Конфигурирование SSH клиента
Пришло вермя конфигурирования клиента SSH. От пользователя root запускаем команду vipw uucp и редактируем домашний каталог пользователя с:
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
на
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucp:/usr/libexec/uucp/uucico
Затем генерируем ключи для клиента:
% su -m uucp
$ export HOME=/var/spool/uucp
$ cd /var/spool/uucp
$ ssh-keygen -t dsa
В последней команде вас попросят ввести кодовую фразу. Не делайте этого, просто нажмите Enter. Хотя это и походит на брешь в системе сетевой защиты, пользователь uucp не имеет пароля в /etc/passwd. Нам в дальнейшем потребуется файл id_dsa.pub
Настройка сервера
На сервере также требуется конфигурирование Postfix, UUCP и SSH.
Настройка сервера Postfix
Я считаю это само собой разумеющимся, что это - основной почтовый сервер, Вы уже знаете, как конфигурировать Postfix для получения и отправки почты из и в Интернет.
Postfix должен знать, что всю почту для клиента необходимо отправлять через UUCP. Поэтому в файле /usr/local/etc/postfix/transport должна быть строка:
####### this is POSTFIX 'transport' file #########
hosted-domain.tld uucp:client
Postfix также должен осуществлять маршрутизацию почты для нашего домена, поэтому в /usr/local/etc/postfix/relay_domains указываем:
####### this is POSTFIX 'relay_domains file #########
hosted-domain.tld OK
hosted-domain.tld OK
Затем активируем изменения:
% postmap transport relay_domains && postfix reload
Настройка UUCP
Как и для клиента, используя vipw uucp сделайте изменения в /etc/password:
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucp:/usr/libexec/uucp/uucico
на
uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucp:/bin/sh
Затем, создаем файл /etc/uucp/sys, содержащий:
###### this is the UUCP 'sys' file for Taylor UUCP #######
# client
system client
time any
port tcp
protocol t
remote-send /var/spool/uucppublic
remote-receive /var/spool/uucppublic
# other clients use the same lines
Создаем /etc/uucp/passwd:
###### this is the UUCP 'passwd' file for Taylor UUCP #######
yourlogin yourpassword
Конфигурация SSH
В финале необходимо сконфигурировать SSH. Воспользуемся командой su -m uucp и создадим файл authorized_keys:
$ touch /var/spool/uucp/.ssh/authorized_keys
Скопируем содержимое клиентского файла id_dsa.pub(располагающегоса в /var/spool/uucp/.ssh/) в /var/spool/uucp/.ssh/authorized_keys на сервере. Установим права доступа:
chmod go-rwx && chown uucp:uucp
Затем редактируем authorized_keys, вставив в начало файла команду:
command="/usr/libexec/uucp/uucico -l
Таким образом, содержимое файла будет выглядеть примерно так:
command="/usr/libexec/uucp/uucico -l" ssh-dss AAAAB3NzaC1kc3MAAACBA...
Все это должно быть в одну строку. Затем заключительная команда:
cd /var/spool/ && chmod go-w uucp.
Заключительная наладка и тестирование
Финал. Зарегистрируем DSA ключ для клиентской машины в /var/spool/uucp/.ssh/known_hosts. Для этого необходимо переключиться в пользователя uucp (командой su -m uucp), выполнить команду ssh -v uucp@server.domain.tld и ответить "yes".
В этой точке вся входящая почта для hosted-domain.tld будет помещена в очередь и сохранена в каталоге var/spool/uucp/client. UUCP с удовольствием будет ее посылать, всякий раз создавая SSH туннель.
Если что то не работает, то проверьте порядок действий еще раз. На этом, собственно и все.
Проверим реальную работу.
Дозваниваемся до провайдера Интернет и выполняем:
su -m uucp
/usr/libexec/uucp/uucico -f -sserver
Для наблюдения процесса доставки почты введем:
uulog -f -sserver
Для просмотра обработки почты Postfix воспользуйтесь командой:
tail -f /var/lo/maillog
Запускаем любимый почтовый клиент и отправляем почту. Вы должны будете увидеть ее в очереди UUCP (uustat -sserver) и отослана при следующем запуске uucico.
Вы можете использовать команду uustat -k <jobid> на сервере или клиенте для прекращения работы, которую можно просмотреть командой using uusat -s <system>:
server.NI8whUuAALf1 server uucp 10-06 10:35 Executing rmail \
user@domain.tld (sending 1452 bytes)
В этом примере необходимо будет ввести uustat -k system.NI8whUuAALf1 для удаления работы.
Для автоматизации работы воспользуемся услугами демона cron. Для предотвращения ошибок, необходимо иметь постоянное подключение к Интернет. Выполним команду crontab -u uucp -e и введем следующую команду для проверки почты каждые пять минут:
# This is Taylor UUCP crontab file
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/libexec/uucp
0-55/5 * * * * /usr/libexec/uucp/uucico -f -sserver
В заключение хочу сказать, что очень надеюсь, что этот пример помог вам и мне просто интересно, сколько людей в мире еще использует UUCP. Я буду рад получить от вас письмо, для того чтобы составить некую карту стран и пользователей.
Автор: Christophe Prevotaux, Перевод: Сгибнев Михаил (http://dreamcatcher.ru)