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,