Copyright(C) by K&K 2:5054/69 aka cola@tcsb.perm.su 23.05.97
Как я настраивал smail!
Дано :
2 сервера под Linux :
server.tcsb.perm.su
tcsb.perm.su
Примечания : kernel 2.0.30
smail 3.1.29
Пользователи : Отдел маркетинга,
сетевой отдел,
начальники.
Примечание: Все пользователи
работают под Windows95 ;)
1 сервер у меня дома :
cola.tcsb.perm.su
1 сервер в банке :
bank.perm.su
1 сервер провайдера uucp:
cclern.perm.su
Необходимо : Отдавать принимать почту:
- у провайдера uucp (Все пользователи)
- у сберегательного банка (все пользователи)
- у сервера cola.tcsb.perm.su
- Возможно у других серверов xxxx.tcsb.perm.su
(buh,versia)
---------------------------------------------------------------------
Файл конфигурации config на tcsb.perm.su
---------------------------------------------------------------------
#
# Конфигурационный файл smail для tcsb.perm.su
# (Смотрите smail(5) man для получения полной информации)
#
+smtp_debug # Отладочная информация для smtp
spool_mode=400 # Файлы в спул ложаться в таком режиме
max_message_size=500k # Максимальный размер сообщения
hostname=tcsb.perm.su:tcsb:f69.n5054.z2.fidonet.org # Все допустимые
# имена данного хоста
visible_domain=tcsb.perm.su #
more_hostnames=f69.n5054.z2.fidonet.org #
+error_copy_postmaster # Сообщения об ошибкак отсылать на
# адрес postmaster
postmaster_address=cola@tcsb.perm.su #адрес postmaster
uucp_name=tcsb.perm.su # UUCP-имя для данного хоста
smart_path=cclearn # Все что не предназначено для
# определенных хостов cola,bank и т.д.
# будет падать на cclearn (Имеется ввиду
# что адреса правильные , если адреса не правильные
# то сообщение вернется назад
smart_transport=uux # для smartdrive использовать транспорт
# uux . То есть все сообщения отправляемые на
# smart_path будут отправлятся с помощью uux
#
auth_domain=tcsb.perm.su # Главной целью этой переменной дать список
# доменов , которые не будут соответствовать
# smarthost router driver
----------------------------------------------------------------
Файл var/lib/smail/directors
Отвечает за доставку почты на локальные адреса.
---------------------------------------------------------------
# smail directors
#
# Ниже приведенные два драйвера будут брать
# из всех файлов псевдонимов (типа /usr/lib/aliases)
# строчки :include:filename
# после чего будут обрабатывать список адресов , записанных в
# этом файле filename
#
aliasinclude:
driver = aliasinclude, # use this special-case driver
nobody; # Когда доставка идет в файл
# или когда вызывается программа,
# взятая из алиас файла, то smail запускается с UID nobody
copysecure, # get permissions from alias director
copyowners, # get owners from alias director
# forwardinclude - expand ":include:filename" addrs produced by forward files
forwardinclude:
driver = forwardinclude, # use this special-case driver
nobody; # смотри выше.
copysecure, # get perms from forwarding director
copyowners, # get owners from forwarding director
# aliases - Ищет для алиаса расширение записаное в базе
# Это стандартный алиас файл. Используется для переапределения адресов
# root, postmaster, MAILER-DAEMON
# this site configuration, the aliases file is used mostly for
# machine-specific aliasing/forwarding information.
# Глобальный форвардинг должен быть установлен
# в файле "forward" database.
aliases:
driver = aliasfile, # general-purpose aliasing director
-nobody, # all addresses are associated
# with nobody by default, so setting
# this is not useful.
owner = owner-$user; # Проблемы отсылать владельцу
# алиас файла
file = /usr/lib/aliases, # Сам алиас файл
modemask = 002, # маска доступа
# Данный алиас файл не должен
# иметь доступ для "Всего мира"
proto = lsearch, # Использовать линейный поиск
# Мой файл /usr/lib/aliases
#+++++++++++++++++++++++++++ Cut here +++++++++++++++++++
# Note: if your /usr/lib/smail/directors says that the aliases
# director uses proto=dbm, you must use mkaliases to make
# /usr/lib/aliases.pag and /usr/lib/aliases.dir, which are the
# actual files used by smail.
# If you use proto=lsearch, smail will read this file. (That's
# much slower but it's OK if this file is small.)
postmaster:cola@tcsb.perm.su
webmaster:postmaster
hostmaster:postmaster
usenet:postmaster
root:cola@tcsb.perm.su
# Всем ниже перечисленым пользователям
# переправлять почту на сервер server.tcsb.perm.su,
# Где они ее читают пишут с помощью POP3/SMTP :)
# На server.tcsb.perm.su Установлены соответствующие службы
# Ну не хочу я иметь аккаунты на своей машине :))
#
alex:alex@server.tcsb.perm.su
alexsc:alexsc@server.tcsb.perm.su
denn:denn@server.tcsb.perm.su
ola:ola@server.tcsb.perm.su
marina:marina@server.tcsb.perm.su
maksim:maksim@server.tcsb.perm.su
mike:mike@server.tcsb.perm.su
dima:dima@server.tcsb.perm.su
svl:svl@server.tcsb.perm.su
andrey:andrey@server.tcsb.perm.su
#
# Фидо узлы !
#
Пропущены ...
#+++++++++++++++++++++++++++ end cut ++++++++++++++++++++++++++++
# forward - search for expansions stored in a forwarding database
# This is the subdomain-wide user forwarding database. Entries are
# maintained here for current or past users, to forward their mail to
# their preferred mail-reading machine. The forward database is
# shipped around the TCP/IP network as changes are made, to keep the
# network consistent.
forward:
driver = aliasfile, # general-purpose aliasing director
-nobody, # all addresses are associated
# with nobody by default, so setting
# this is not useful.
owner = real-$user; # проблемы отсылаются на адрес
# real-$user
file = /var/lib/smail/forward, # Сам файл
modemask = 002, # Маска доступа
proto = lsearch # Использовать линейный поиск в файле
# возможен так же бинарный и dbm ;)
# dotforward - Расширяет .forward файл в домашнем каталоге пользователя
# Если в нем описыны адреса как в обычном алиас файле, то вся почта ,
# которая приходит на имя этого пользователя , будеи перенаправлятся на
# эти адреса
# Например:
# cola@server.tcsb.perm.su,sysop@tcsb.perm.su
# В этом случае вся почта на адрес xxxx@tcsb.perm.su
# Будет пересылаться на cola@server.tcsb.perm.su,sysop@tcsb.perm.su
# очень удобно , когда ты в отпуске или где то в командировке :)
#
dotforward:
driver = forwardfile, # general-purpose forwarding director
owner = Postmaster, # Все проблемы отсылать postmaster'у
nobody, # смотри выше
sender_okay; # sender never removed from expansion
# Это я сно нет ?? :)
file = ~/.forward, # .forward файл в домашнем каталоге
# Попробуйте сменить :))
checkowner, # Владельцем этого файла может быть или
owners = root, # пользователь или root
modemask = 002, # Права доступа
caution = daemon:root, # Не запускать root или демоном
# don't run things as root or daemon
# be extra carefull of remotely accessible home directories
# смотрите man !
unsecure = "~uucp:~nuucp:/tmp:/usr/tmp"
# forwardto - расширяет "Forward to " в почтовом ящике пользователя
# This emulates the V6/V7/System-V forwarding mechanism which uses a
# line of forward addresses stored at the beginning of user mailbox files
# prefixed with the string "Forward to "
# Если в вашем почтовом ящике записано Forward to name@domain.dom
# то вся приходящая на вас почта будет отправлятся на адрес
# name @domain.dom
forwardto:
driver = forwardfile,
owner = Postmaster, nobody, sender_okay;
# влядельцы
file = /var/spool/mail/${lc:user}, # Почтовый ящих пользователя
forwardto, # разрешает функцию "Forward to "
checkowner, # смотри выше и man smail
owners = root, #
modemask = 0002, # смотри выше
caution = daemon:root # смотри выше
# user - соответствует пользователю на локальном хосте
# которому в его почтовый ящик отправляется почта
user: driver = user; # driver to match usernames
transport = local # используется транспорт local
# real_user - match usernames when prefixed with the string "real-"
# Почти аналогично драйверу user
# This is useful for allowing an address which explicitly delivers to a
# user's mailbox file. For example, errors in a .forward file expansion
# could be delivered here, or forwarding loops between multiple machines
# can be resolved by using a real-username address. Also, users that
# wish to use mail as a means of transferring data to a machine that
# is not their "home" machine can mail to real-login-name@remote.host.
real_user:
driver = user;
transport = local,
prefix = "real-" # for example, match real-root
# lists - расширяет листы рассылки записаные в каталоге list
# Лист рассылки mail-list может быть просто создан как файл mail-list
# в каталоге /usr/lib/smail/lists
# Ниже смотрите примеры моих листов рассылки.
lists: driver = forwardfile,
caution, # flag all addresses with caution
nobody, # and then associate the nobody user
owner = owner-$user; # system V sites may wish to use
# o-$user, as owner-$user may be
# too long for a 14-char filename.
# имя листа рассылк в нижнем регистре
file = lists/${lc:user} # в каталоге lists
# относительно $smail_lib_dir
# $smail_lib_dir - определяет место расположения smail
# в каталоге list так же должны быть каталоги
# owner и request , в которых должны находится файлы
# с таким же именем как и лист рассылки , в которых должны
# быть записаны владелец и адрес по которому обращатся за листом
# рассылки соответственно .
# Описание смотрите ниже :)
#+++++++++++++++++++++++++++++++ cut here +++++++++++++++++++++++++++
# Мой лист рассылки для поинтов !
#
Maksim.Zhilin@p2.f69.n5054.z2.fidonet,
Serg.Shevkov@p3.f69.n5054.z2.fidonet,
Aleksandr.Tarhanov@p5.f69.n5054.z2.fidonet,
Ura.Kozlov@p6.f69.n5054.z2.fidonet,
Denis.Kolosov@p7.f69.n5054.z2.fidonet,
Kosta.Kudrin@p6969.f69.n5054.z2.fidonet
#
#++++++++++++++++++++++++++++++++ end cut ++++++++++++++++++++++++++++
# owners - expand mailing lists stored in a list owner directory
# Владелецы листа рассылки mail-list должны быть прописаны в файле mail-list
# в каталоге /usr/lib/smail/lists/owner
# Все ошибки встреченые при обработке листа рассылки будут направлены на
# адрес его владелцев. Имя файла владельца листа рассылки должно быть
# таким же как и имя файла листа рассылки.
owners: driver = forwardfile,
caution, # flag all addresses with caution
nobody, # and then associate the nobody user
owner = postmaster; # system V sites may wish to use
# o-$user, as owner-$user may be
# too long for a 14-char filename.
# map the name of the mailing list to lower case
prefix = "owner-",
file = lists/owner/${lc:user} # lists is under $smail_lib_dir
# Это просто мне лень описывать ! :(
# Поймете сами ?? :))
# Короче все запросы о листе рассылке mail_list необходимо
# отсылать на адрес mail_list-request
# Влядельцы прописываются в файле с именем листа рассылки mail_list
# который должен находится в каталоге /list/request
# Для большего читайте man
request: driver = forwardfile,
caution, # flag all addresses with caution
nobody, # and then associate the nobody user
owner = postmaster; # system V sites may wish to use
# o-$user, as owner-$user may be
# too long for a 14-char filename.
# map the name of the mailing list to lower case
suffix = "-request",
file = lists/request/${lc:user} # lists is under $smail_lib_dir
#
# У драйвера smartuser можно апределить адрес
# на который будут валится все письма с неизветсными адресами. :)
#
smartuser: driver = smartuser;
---------------------------------------------------------------
Файл routers - отвечает за доставку почты на удаленные адреса
то есть на адреса не на localhost
---------------------------------------------------------------
#
# match-inet-hosts - соответствует хостам в TCP/IP network database
# Обычно , это имена машин ,которые находятся на лакальной машине
# в файле etc/hosts
# The /etc/hosts file is assumed to be for hosts in
# the local subdomain only. :(
# на tcsb.perm.su все хосты в моей сети прописаны в /etc/hosts
# Этот драйвер отдает почту на server.tcsb.perm.su
# Скорее всего при установке DNS придется придумывать что то новое
# Что ? Пока не знаю ! :(
#
match-inet-hosts:
driver=gethostbyname, # Ищет хост по имени с использованием
# системного вызова gethostbyname(3)
transport=smtp; # Использовать транспорт smtp
domain = tcsb.perm.su, # наш домен
only_local_domain #
#
# Маршрутизатор для всех uucp систем исключая cclearn
#
# Этот драйвер отдает почту на cola.tcsb.perm.su,
# bank.perm.su , а может так же на любые
# близь лежащие внутренние системы
# в будет добавлены новые системы
# mike.tcsb.perm.su - Начальник отдела маркетинга из дома
# Может быть кто-нибудь еще !;)
# Все делается очень просто в файле methods/table прописывается
# соответствие хостов и транспортов к ним и все!
#
# Вот мой файл methods/table
#
#+++++++++++++++++++++++ cut here +++++++++++++++++++++++++++++++++
# This file names the transports that are to be used in delivering
# to specific hosts from your system
# examples from /usr/lib/smail/samples/bigsite/bargw/methods/table:
# host transport
# -------- ---------
bank uux
cola uux
* uux # Вот это должно быть последним :)
#+++++++++++++++++++++++++++ end cut ++++++++++++++++++++++++++++
# Ну еще в файле path = file_name
# надо указать UUCP путь ,который указывает
# по какому пути отправлять почту !
# Мой файл file = maps/sb.path,
# Приведен ниже
#
#++++++++++++++++++++++++++++ cut here ++++++++++++++++++++++++++
.cola.tcsb.perm.su cola!%s
.bank.perm.su bank!%s
#++++++++++++++++++++++++++++ end cut +++++++++++++++++++++++++++
# Краткие объяснения :
# вся почта , которая должна идти на .cola.tcsb.perm.su
# будет отправлятся на систему cola (в UUCP'шном варианте)
# а то что должно идти на .bank.perm.su будет идти
# на систему bank
# Дома у себя на cola.tcsb.perm.su
# я могу явно указать путь
# .bank.perm.su vbank!tcsb%s
# То есть принудительно заставляю почту идти через
# tcsb на bank !
# Если не понятно читайте ман на smail и uucp :))
#
sb:
transport = uux, # использовать транспорт uux
driver = pathalias, #
method = table; # Определяет файл
# в котором записано соответствие хостов и транспортов для них
file = maps/sb.path, # Файл в котором праписан путь для
# доставки почты
proto = bsearch, # в отсортированном порядке
# для быстрой работы !;)
domain = uucp, # strip trailing uucp
reopen # Не держать файл открытым
# а через определенные ппрормежутки времены
# вновь перечитывать ! смотри man smail ;)
#
# Это маршрутизатор для ФИДО
#
ifmail: driver=pathalias,
transport=ifmail; # Использовать транспорт
# ifmail
file=maps/ftn.paths,
# аналогично sb.path
# ftn.paths приведен ниже
#
#++++++++++++++++++++++++++++ cut here +++++++++++++++++++++++
# Роутинг для фидо
#-------------------------------------------------------------
# На ПОИНТОВ Моего узла /69
#-------------------------------------------------------------
# на /69.6969
#-------------------------------------------------------------
.p6969.f69.n5054.z2.fidonet.org .p6969.f69.n5054.z2.fidonet.org!%s
.p6969.f69.n5054.z2.fidonet .p6969.f69.n5054.z2.fidonet.org!%s
#-------------------------------------------------------------
# на /69.2
#-------------------------------------------------------------
.p2.f69.n5054.z2.fidonet.org .p2.f69.n5054.z2.fidonet.org!%s
.p2.f69.n5054.z2.fidonet .p2.f69.n5054.z2.fidonet.org!%s
#-------------------------------------------------------------
# на /69.3
#-------------------------------------------------------------
.p3.f69.n5054.z2.fidonet.org .p3.f69.n5054.z2.fidonet.org!%s
.p3.f69.n5054.z2.fidonet .p3.f69.n5054.z2.fidonet.org!%s
#-------------------------------------------------------------
# на /69.5
#-------------------------------------------------------------
.p5.f69.n5054.z2.fidonet.org .p5.f69.n5054.z2.fidonet.org!%s
.p5.f69.n5054.z2.fidonet .p5.f69.n5054.z2.fidonet.org!%s
#-------------------------------------------------------------
# на /69.6
#-------------------------------------------------------------
.p6.f69.n5054.z2.fidonet.org .p6.f69.n5054.z2.fidonet.org!%s
.p6.f69.n5054.z2.fidonet .p6.f69.n5054.z2.fidonet.org!%s
#-------------------------------------------------------------
# на /69.7
#-------------------------------------------------------------
.p7.f69.n5054.z2.fidonet.org .p7.f69.n5054.z2.fidonet.org!%s
.p7.f69.n5054.z2.fidonet .p7.f69.n5054.z2.fidonet.org!%s
# ------------------------------------------------------------
#
# Роутинг Эх и мыла на /2
#
#-------------------------------------------------------------
.f2.n5054.z2.fidonet.org f2.n5054.z2.fidonet.org!%s
.f2.n5054.z2.fidonet f2.n5054.z2.fidonet.org!%s
#-------------------------------------------------------------
#
# Роутинг Эх на и мыла на /9
#
#-------------------------------------------------------------
.f9.n5054.z2.fidonet.org f9.n5054.z2.fidonet.org!%s
.f9.n5054.z2.fidonet f9.n5054.z2.fidonet.org!%s
#-------------------------------------------------------------
#
# Роутинг Эх на и мыла на /4
#
#-------------------------------------------------------------
.f4.n5054.z2.fidonet.org f4.n5054.z2.fidonet.org!%s
.f4.n5054.z2.fidonet f4.n5054.z2.fidonet.org!%s
#-------------------------------------------------------------
#
# Все остальное мыло идет через /9 сорри ,но так будел лучше
# Если будет необходимость , то переделать на /2
#
#-------------------------------------------------------------
.fidonet.org f9.n5054.z2.fidonet.org!%s
.fidonet f9.n5054.z2.fidonet.org!%s
#
# Конец!
#++++++++++++++++++++++++++++ end cut ++++++++++++++++++++++++
# Примечание вторая строчка прописана для подстраховки :)
#
proto=lsearch # Линейныйф поиск ,можно сделать и
# bsearch -двоичный , отсортировав
# файл с помощью sort (1)
# можно так же добавть строку
# только нге забудде после lsearch поставить запятую :)))
# domain = fidonet.org, # strip trailing uucp
# reopen # Не держать файл открытым
#
#
# Должен быть последним.
#
# для smarthost использовать транспорт uux и
# все отправлять на систему ccleran
#
smarthost: driver=smarthost,transport=uux;
path=cclearn
------------------------------------------------------------
Файл transports
Описывает транспорты , которые используются для доставки почты
-------------------------------------------------------------
Е мое !!!! Лень !! ;)
#
# Используется для доставки к локальным адресам (то есть адресам
# на localhost)
#
local:
driver=appendfile, # Добавить в файл
return_path, # Писать поле return_path
local,
from, # Не забывайте ставить
# то elm,mail и т.д. будут ругаться
#
unix_from_hack; # Вставлять ">" :)) смотри man
file=/var/spool/mail/${lc:user}, # почтовый ящик пользователя
group=mail, # В какая группа ! смотри man
mode=0600, # режим доступа
suffix="\n" # Каждое сообщене с новой строки
#
# Используется для того , что бы можно было
# вместо адресов подставлять переназначение в комманды :)
#
pipe:
driver=pipe, #
return_path, # см. выше
local,
from, # см. выше
unix_from_hack; # см. выше
cmd="/bin/sh -c $user", # кого запускать шелом
parent_env, # Адрес брать вначале из переменных окружения
# а после ужесам адрес см. man :))
pipe_as_user, # Если не дан group опция , то UID GID
# для дочернего процесса ставиться из setuid(2)
# setgid(2)
umask=0022, # Маска доступа.
-log_output, # Лог не нужен.
ignore_status, # если установлен , то статус завершения
# порожденного процесса игнорируется :)
ignore_write_errors # Если установлен ,то все ошибки записи игнорируются
#
#
# Используется для того , что бы можно было
# почту кидать в файл ;))
#
file:
driver=appendfile,
return_path,local,from,unix_from_hack; # см. выше
file=$user, # см. man :))
append_as_user, # см. man
check_path, # см. man
expand_user, # см. man
suffix="\n", # см. man
mode=0644 # см. man ;))
#
# Simple Mail Transfere Protocol ;)
# Понятно ??
#
smtp:
driver=smtp,
-max_addrs, # см. man :)
-max_chars, # см. man :)
# uux - маршрутизатор для удаленных UUCP сайтов ,
# которые выполняют rmail :))
# Вся почта ставиться в очередь !
# As many as five recipient addresses will be delivered to the remote
# host in one UUCP transaction. ;)
uux: driver = pipe,
uucp, # использовать UUCP-стиль дресации ;)
from, # см. выше
max_addrs = 5, # 5 адресов за раз
max_chars = 200; # at most 200 chars of addresses см.man :)
# the -r flag prevents immediate delivery, parentheses around the
# $user variable prevent special interpretation by uux.
cmd = "/usr/bin/uux - -r -g$grade $host!rmail $((${strip:user})$)",
umask = 0022, #
pipe_as_sender # см.man :)
# uux_one_addr - deliver mail over UUCP to a remote host that can take
# one address at a time.
# This is often necessary when delivering to a site running an unmodified
# version of 4.1BSD.
#
# Так же как uux !:)
# Но один адрес за раз !
uux_one_addr:
driver = pipe,
uucp, # use UUCP-style addressing forms
from; # supply a From_ envelope line
# the -r flag prevents immediate delivery
cmd = "/usr/bin/uux - -r -g$grade $host!rmail (${strip:user})",
umask = 0022,
pipe_as_sender
# demand - deliver to a remote rmail program, polling on demand
# так же как uux , но будет использоваться немедленная доставка
# данных на удаленную систему см.man :)
#
demand: driver = pipe,
uucp, from, max_addrs = 5, max_chars = 200;
# with no -r flag, try to contact remote site immediately
cmd = "/usr/bin/uux - -g$grade $host!rmail $(($user)$)",
umask = 0022,
pipe_as_sender
#
# А вот эта гадость для FIDO ;))
#
ifmail:
from, # см.man :)
received, # см.man :)
max_addrs=5, # см.man :)
max_chars=200, # см.man :)
driver=pipe; # см.man :)
pipe_as_sender, # см.man :)
cmd="/usr/lib/ifmail/ifmail -r$host $((${strip:user})$)" # ;))
#
#
---------------------------------------------------------------
Файл retry
Описывает назначеный домен , минимальный интервал между попытками
доставить почту и итервал в течении которого эти попытки осуществляются
----------------------------------------------------------------
# Мой файл retry
#
#++++++++++++++++++++++++++++ cut here +++++++++++++++++++++++++
* 30m/5d
#+++++++++++++++++++++++++++++ end cut ++++++++++++++++++++++++++
#
# На все хосты пытаться доставить почту !
# Попытки осуществлять через 30 минут в течении 5 дней ! :)
======================================================================
======================================================================
Файл конфигурации config для smail 1.3.29 на сервере
server.tcsb.perm.su
----------------------------------------------------------------------
# smail configuration for server.tcsb.perm.su
# (see smail(5) man page for details and other options)
#
spool_mode=400 # Режим доступа к спулл файлам
max_message_size=200k # максимальный размер сообщения
visible_domain=tcsb.perm.su
visible_name=tcsb.perm.su # Это служит для того что бы
# в исходящих сообщениях
# путь отправителя был не server.tcsb.perm.su
# а tcsb.perm.su :) Ну хочется мне так :)
smart_path=tcsb.perm.su # Всю почту отправлять на tcsb.perm.su
# А там разберуться что куда . ;)
smart_transport=smtp # При этом использовать транспорт smtp
#smart_user=cola # Вот эта вот гадость для того что бы
# если узер не существует , то отправлять почту
# на адрес пользователя smart_user
+error_copy_postmaster # Все ошибки постмастеру
postmaster_address=cola@.server.tcsb.perm.su # Имя постмастера
smtp_banner="$primary_name Linux Smail$version
# $compile_num ready at $date"
+smtp_debug # для Отладки
---------------------------------------------------------------------
Все остальные файлы кроме routers почти едентичны с tcsb.perm.su
Файл routers для server.tcsb.perm.su
# Для адресов в /etc/hosts
inet_host:
driver=gethostbyname,
transport=smtp;
-domain,
-only_local_domain
# domain=tcsb.perm.su,
# only_local_domain
#
# Для всех остальных
smarthost: driver=smarthost,