ледний имеет специальный драйвер для BIND обслуживания, которое способно распознать записи MX. 15.4 Режимы доставки Почты Как отмечено выше, smail способен передать сообщения немедленно, или ставить их в очередь для обработки позже. Если, который Вы выбираете очередь, smail сохранит всю почту в каталоге сообщений /var/spool/smail. Вы можете выбирать один из трех режимов получения, устанавливая атрибут режима получения в файле конфигурации как активный, фоновый, или поставленный в очередь. Если Вы включаете формирование очереди, Вы должны удостовериться, что очередь проверяется регулярно; возможно каждые 10 или 15 минут. Если Вы выполняете smail в daemon режиме, Вы должны добавить опцию -q10m в командной строке. В качестве альтернативы, Вы можете вызывать runq из cron в этих интервалах. Runq должен быть связан с smail. Вы можете отображать текущую очередь почты, вызывая smail с -bp опцией. Так же, Вы можете делать mailq связь с smail, и вызывать mailq: - 273 - $ mailq -v m0pvB1r-00023UB From: root (in /var/spool/smail/input) Date: Sun, 24 Apr 94 07:12 MET DST Args: -oem -oMP sendmail root@vstout.vbrew.com Log of transactions: Xdefer: reason: (ERR 148) transport smtp: connect: Connection refused Это показывает одиночное сообщение, в очереди сообщений. Файл регистрации (который отображается, если Вы даете mailq -v опцию) может давать дополнительную причину, почему оно все еще ждет получения. Даже, когда Вы не используете формирование очереди, smail будет иногда помещать сообщения в очередь, когда он находит непосредственные сбои получения по нерезидентной причине. Для SMTP соединений, это может быть недоступный host; но сообщения могут также быть отсрочены, когда файловая система полна. 15.5 Разнообразная конфигурация Опций Имеется очень большое количество опций, которые Вы можете устанавливать в файле конфигурации, которые, хотя и полезны, но не существенны для выполнения smail, и которые мы не будем обсуждать здесь. Взамен, мы только упомянем несколько, что бы Вы могли находить причины использовать их: Если error copy postmaster - булева переменная установлена, любая ошибка, генерирует сообщение начальнику почтового отделения. Обычно, это выполнено для ошибок, которые появляются из-за дефектной конфигурации. Переменная может быть включена, помещая ее в файле конфигурации, с предшествующим плюсом (+). max hop count Если число переходов сообщения (то есть число главных ЭВМ, уже пересеченных) равняется или превышает это число, попытки получения приведут к сообщению об ошибках, возвращаемому отправителю. Это используется, чтобы предотвратить сообщения от выполнения бесконечного цикла. Счет перходов вообще вычислен из числа Received: поля в заголовке почты, но могут также быть установлен вручную используя -h опцию в командной строке. Значение по умолчанию 20. - 274 - postmaster Адрес постмастера. Значение по умолчанию - root. 15.6 Маршрутизация и Получение Сообщений Smail разбивает получение почты в три различных задачи, программу маршрутизации, руководитель, и транспортный модуль. Модуль программы маршрутизации распределяет все отдаленные адреса, определяя к которому host, сообщение должно быть послано следующему, и который транспорт должен использоваться. В зависимости от характера связи, различные транспортировщики типа UUCP или SMTP могут использоваться. Транспортный модуль, в заключение, является ответственным за любой метод получения, который был выбран. Он пробует передавать сообщение, и в случае отказа или генерирует сообщение удара, или задерживает его для более позднего повторения. С smail, Вы имеете много свободы в конфигурировании этих задач. Для каждого из них, доступен ряд драйверов, из которого Вы можете выбирать те, в которых Вы нуждаетесь. Вы описываете их smail в паре файлов, а именно routers, directors, и transports в /usr/lib/smail. Если эти файлы не существуют, приняты приемлемые значения по умолчанию. Если Вы хотите изменить маршрутизацию smail, или изменить транспорт, Вы должны получить типовые файлы из smail исходного распределения, скопировать типовые файлы в /usr/lib/smail, и изменять их согласно вашим потребностям. Типовые файлы конфигурации также даны в Приложении(аппендиксе) 20.3. 15.7 Маршрутизация Сообщений Когда дано сообщение, smail проверяет, если адресат - локальный host, или отдаленный пункт. Если целевой адрес host является одним из локального hostname, конфигурированного в конфигурации, сообщение будет передано модулю управления. Иначе, smail вручает адрес ряду драйверов программы маршрутизации, чтобы выяснить которому host'у передано сообщение. Они могут быть описаны в файле routers; если этот файл не существует, используется набор заданных по умолчанию - 275 - программ маршрутизации. Host адресата передается всем программам маршрутизации по очереди, и находящий наиболее специфический маршрут будет выбран. Рассмотрите сообщение, адресованное joe@foo.bar.com. Одна программа маршрутизации могла бы знать заданный по умолчанию маршрут для всех главных ЭВМ в bar.com области, в то время как другая имеет информацию для foo.bar.com непосредственно. Если там - две программы маршрутизации, которые обеспечивают "лучшее соответствие'', та что раньше в файле программ маршрутизации будет выбрана. Эта программа маршрутизации теперь определяет транспорт, который нужно использовать, например UUCP, и генерирует новый адрес адресата. Новый адрес передан на транспорт наряду с host. В вышеупомянутом примере, smail мог бы выяснять, что foo.bar.com должен быть достигнут через UUCP использование пути ernie!Bert. Тогда генерируется новая цель из bert!Foo.bar.com!user, и используется UUCP транспорт, поскольку конверт адресован к ernie. При использовании заданной по умолчанию установки, следующие программы маршрутизации доступны: + Если, адрес host адресата может быть разрешен, используя gethostbyname или gethostbyaddr вызов из библиотек, сообщение, будет передано через SMTP. Единственое исключение - если адрес найден, чтобы обратиться к локальному host. Smail также распознает адреса IP, которые пишутся как точечная четверка, как допустимый hostname, если только они могут быть решены через gethostbyaddr обращение. Например, scrooge@ [149.76.12.4] был бы допустим, хотя это необычный почтовый адрес для scrooge на quark.physics.groucho.edu. Если ваша машина находится на Internet, эти программы маршрутизации - не то, что Вы ищете, потому что они не поддерживают записи MX. См. ниже что делать в этом случае. + Если pathalias база данных (/usr/lib/smail/paths) существует, smail пробует искать целевой host (минус любой конечный .uucp) в этом файле. Почта к адресу, согласованному этой программой маршрутизации будет передана используя UUCP, и используя путь, найденный в базе данных. - 276 - + Адрес host (минус любой конечный .uucp) будет сравниваться с выводом команды uuname, чтобы проверить является ли целевой host фактически соседом UUCP. Если дело обстоит так, сообщение будет передан использованием UUCP транспорта. + Если, адрес не был согласован любой из вышеупомянутых программ маршрутизации, он будет передан smart host. Путь smart host также как транспорт, который нужно использовать установлен в файле конфигурации. Эти значения по умолчанию работают для многих простых установок, но сбоят при более сложной маршрутизации. Если перед Вами стоит одна из проблем, обсужденных ниже, Вы будет должен установить ваши собственные программы маршрутизации. Возможно самые плохие проблемы возникают, когда ваш host живет в двойной области, и с телефонным вызовом по номеру IP и со связями UUCP. smail будет пытаться передавать любую почту через SMTP. Это - обычно не, что Вы хотите, потому что, даже если связь SLIP активизирована регулярно, SMTP - намного медленнее чем посылка почты над UUCP. С заданной по умолчанию установкой, не имеется никакого способа выйти из smail. Вы можете избегать этой проблемы при наличии проверки файла путей перед запросом решающего устройства, и помещении всех необходимых главных ЭВМ в файл путей. Если Вы не хотите посылать сообщения над SMTP когда-либо, Вы можете также закомментировать решающие рограммы маршрутизации в целом. Другая проблема состоит в том, что заданная по умолчанию установка не обеспечивает истинную маршрутизацию почты Internet, потому что решающая программа маршрутизации не оценивает записи MX. Чтобы давать возможность полной поддержке маршрутизации почты Internet, прокомментируйте эту программу маршрутизации, и разкомментируйте ту что используется BIND взамен. Имеются, однако, smail binaries включенные в некоторые распределения Linux, которые не имеют поддержки BIND. Если Вы даете возможность BIND, но получаете сообщение в paniclog файле, говорящее "программа маршрутизации inet hosts: драйвер связи не найден'', тогда Вы должны получить исходники и перетранслировать smail (см. раздел 15.2 выше). В заключение, это вообще не очень хорошая идея - использовать uuname драйвер. - 277 - 15.7.1 База данных путей Smail ожидает находить pathalias базу данных в файле путей в /usr/lib/smail. Этот файл необязателен, так если Вы не хотите выполнять любой pathalias вообще, просто удалите любой существующий файл путей. Paths должен быть сортируемый файл ASCII, который содержит входы, которые отображают имена пункта адресата UUCP. Файл должен сортироваться, потому что smail использует двоичный поиск пункта. Комментарии не позволяются в этом файле, и имя пункта должно отделиться от пути, используя МЕТКУ ТАБУЛЯЦИИ. Pathalias базы данных обсуждены подробнее в главе 14 .. Если Вы генерируете этот файл вручную, Вы должен удостовериться, чтобы включить все допустимые имена для пункта. Например, если пункт известен и простым именем UUCP и полностью квалифицированным именем области, Вы должны добавить вход для каждого из них. Файл может сортироваться конвейерной пересылкой его через команду sort. Если ваш пункт является только пунктом листа, то никакой файл paths, не должен быть необходим вообще: только установите атрибуты smart host в вашем файле конфигурации, и оставьте всю маршрутизацию вашей подаче почты. 15.8 Поставка Сообщений Локальным Адресам Обычно, локальный адрес - только имя входа в систему пользователя, когда сообщение передается в его mailbox, /var/spool/mail/user. Другие случаи включают отправку по почте списка имен, и пересылку почты пользователем. В этих случаях, локальный адрес расширяется до нового списка адресов, которые могут быть или локальны или отдаленны. Кроме этих "нормальных" адресов, smail может обрабатывать другие типы локальных адресатов сообщения, подобно именам файла, и командам трубопровода. Они - не адреса, так что Вы не можете посылать почте на /etc/passwd@vbrew.com. - 278 - Имя файла - что-нибудь, что начинается с наклонной черты вправо (/) или тильды (~). Письмо относится к исходному каталогу пользователя, и возможно только, если имя файла принималось из a .forward файл или вход пересылки в mailbox (см. ниже). При поставке файла, smail конкатенирует сообщения к файлу, создавая его в случае необходимости. Командой трубопровода может быть любая команда Unix, которой предшествует символ трубопровода (|). Это заставляет smail вручать команду оболочке наряду с аргументами, но без подачи " | ". Сообщение непосредственно будет подано этой команде на стандартном вводе. Например, чтобы отправить почту в локальную newsgroup, Вы могли бы использовать команду оболочки, именованную gateit, и устанавливать локальный результат, который передает все сообщения из этого списка в команду, используя " | gateit ". Если вызов содержит незаполненное пространство, он должен быть включен в двойные кавычки. Из-за проблем защиты команда не выполняется, если адрес был получен несколько сомнительным способом (например, если файл, из которого адрес принимался, был перезаписываем каждым). 15.8.1 Локальные Пользователи Наиболее общий случай для локального адреса - обозначить mailbox пользователя. Этот mailbox - локализовался /var/spool/mail, и имеет имя пользователя. Если он не существует, он создан smail. Обратите внимание, что, хотя /var/spool/mail - в настоящее время стандартное место, чтобы поместить mailbox файлы, некоторое программное обеспечение почты может иметь другой paths, компилируемый в, например /usr/spool/mail. Имеются два адреса которые требуются smail: mailer - daemon и Постмастер. При производстве сообщения удара для почты undeliverable, машинописная копия послана постмастеру объяснение исследования (в случае, если это могло бы быть из-за проблемы конфигурации). Mailer - daemon используется как адрес отправителя для сообщения удара. Если эти адреса не называют допустимые счета на вашей системе, - 279 - smail неявно отображает mailer - daemon как postmaser, и постмастера как root, соответственно. Вы должны обычно отменять это совмещением имени постмастера с тем, кто является ответственным за поддержание программного обеспечения почты. 15.8.2 Пересылки Пользователь может переназначать почту посылая ее к альтернативному адресу, используя один из двух методов, обеспечиваемых smail. Одна опция должна поместить Forward to recipient,... в первой строке ее mailbox файла. Это пошлет всей входящей почте заданному списку получателей. В качестве альтернативы, она могла бы создавать a .forward файл в ее исходном каталоге, который содержит отделенный запятой список получателей. С этим разнообразием пересылки, все строки файла читаются и интерпретируются. Обратите внимание, что любой тип адреса может использоваться. Таким образом, практический пример .forward файла мог бы быть janet, "|vacation" Первый адрес передает входящее сообщение mailbox janet, в то время как команда vacation возвращает короткое уведомление отправителю. 15.8.3 Специальные Файлы Smail способен обработать специальные файлы, совместимые с теми что известны sendmail Berkeley. Входы в специальном файле могут иметь форму alias: recipients recipients - отделенный запятой список адресов, которые будут заменяться специально. Список получателей может быть продолжен через символы перевода строки, если следующая строка начинается с МЕТКИ ТАБУЛЯЦИИ. Имеется специальная возможность, которая позволяет smail обрабатывать списки отправки по почте из специального файла: если Вы определяете ":include:filename" как получателя, smail будет читать заданный файл, и применять содержимое как список получателей. - 280 - Основной файл побочных результатов исследования - /usr/lib/aliases. Если Вы сделаете этот файл всемирно - перезаписываемым, smail не будет передавать сообщения командам оболочки, данным в этом файле. Типовой файл показывается ниже: # vbrew.com /usr/lib/aliases file hostmaster: janet postmaster: janet usenet: phil # The development mailing list. development: joe, sue, mark, biff /var/mail/log/development owner-development: joe # Announcements of general interest are mailed to all # of the staff announce: :include: /usr/lib/smail/staff, /var/mail/log/announce owner-announce: root # gate the foobar mailing list to a local newsgroup ppp-list: "|/usr/local/lib/gateit local.lists.ppp" Если ошибка происходит при ипользовании адреса, сгенерированного из специального файла, smail будет пытаться посылать копию сообщения об ошибках к "специальному владельцу''. Если адрес владельца не существует, никакое дополнительное сообщение об ошибках не будет сгенерировано. 15.8.4 Списки Отправки по почте Вместо того, чтобы использовать специальный файл, чтобы отправить по почте по списку можно также управляться посредством файлов в каталоге /usr/lib/smail/lists. Список отправки по почте, именованный nag-bugs описан как lists/nag-bugs, должен содержать адреса элементов, отделяемые запятыми. Список может быть дан на нескольких строках, с комментариями. Для каждого списка отправки по почте, пользователь именованный владельцем - listname должен существовать; любое появление ошибок при применени адреса будет сообщено этому пользователю. Этот адрес также используется как адрес отправителя на всех исходящих - 281 - сообщений в Sender: поле заголовка. 15.9 UUCP-Транспорт Имеется ряд транспортировщиков, компилируемых в smail, которые используют UUCP набор программ. В UUCP среде, сообщения обычно передаются, вызывая rmail на следующем host, давая ему сообщение на стандартном вводе и адрес конверта в командной строке. На вашем host, rmail должен быть связан с командой smail. При вручении сообщения на UUCP транспорт, smail преобразовывает целевой адрес в путь удара UUCP. Например, user@host будет преобразован host!user. Любое местонахождение " % " оператора адреса сохраняется, так что user%host@gateway станет gateway!User%host. Однако, smail никогда не будет генерировать такие адреса самостоятельно. В качестве альтернативы, smail может посылать и получать BSMTP пакеты через UUCP. В BSMTP один или большее количество сообщений передаются в одиночном пакете, который содержит команды, которые локальный mailer выдал бы, если бы реальное SMTP соединение имело место. BSMTP часто используется с промежуточным накоплением, чтобы сохранить дисковое пространство. Типовой файл транспорта в приложении 20.3 содержит транспорт dubbed bsmtp который генерирует частичные BSMTP пакеты в каталоге очередей. Они должны быть объединены в конечные пакеты позже, при использовании команды оболочки, которая добавляет соответствующую команду HELO и QUIT. Чтобы давать возможность bsmtp транспорту для специфических связей UUCP, Вы должны использовать так называемые файлы метода (пожалуйста обратитесь к smail странице руководства для подробностей). Если Вы имеете только одну связь UUCP, и используете программу маршрутизации smart host, Вы даете возможность посылать SMTP пакеты, устанавливая интеллектуальную транспортную переменную конфигурации как bsmtp вместо uux. Чтобы получать SMTP пакеты над UUCP, Вы должны удостовериться, что Вы имеете команду распакетирования. Если отдаленный пункт использует smail, Вы должны связать rsmtp с smail. Если отдаленный пункт выполняет sendmail, Вы должны дополнительно установить команду оболочки, именованную - 282 - /usr/bin/bsmtp, которая делает простой "запуск rsmtp". 15.10 SMTP-Транспорт Smail в настоящее время поддерживает SMTP драйвер, чтобы передавать почту по TCP соединениям. Это дает возможность посылки сообщения любому числу адресов на одиночном host, с hostname, определяемым или как полностью квалифицированное имя области которое может быть использовано программным обеспечением работы с сетями, или в точечной записи четверки, включенной в квадратные скобки. Вообще, адреса, решенные любым BIND, gethostbyname или gethostbyaddr драйверов программы маршрутизации будут переданы на SMTP транспорт. SMTP драйвер будет пытаться соединяться с отдаленным host немедленно через smtp порт как перечислено в /etc/services. Если это не может быть достигнуто, или соединение прерывается, оно будет повторно предпринято в более позднее время. Получение на Internet требует, чтобы маршруты до host адресата были определены в формате адрес-маршрут, описанном в главе 14, а не как путь удара. smail будет следовательно трансформировать user%host@gateway, где gateway достигнут через host1!host2!host3, по адресу исходного маршрута < @host2,@host3:user%host@gateway >, который будет послан как конверт, адресованный host1. Чтобы давать возможность этому преобразованию (наряду с встроенным драйвером BIND), Вы должны редактировать вход для smtp драйвера в файле transports. Типовой файл transports дан в Приложении 20.3. 15.11 Квалификация Hostname Иногда желательно захватить неквалифицированные hostname (то есть те, которые не имеют имени области) заданные в адресе отправителя или получателя, например при переходе между двумя сетями, где каждая требует полностью квалифицированных имен области. На Internet -UUCP реле, такие hostname должны быть отображены в uucp область по умолчанию. Другие изменения адреса - 283 - сомнительны. Файл /usr/lib/smail/qualify сообщает smail, которая область определяет путь на который hostname. Входы в файле qualify состоят из hostname в перевом столбце, сопровождаемым именем области. Строки, содержащие знак мусора как первый символ рассматриваются комментариями. Входы ищутся в порядке, в котором они появляются. Если никакого файла qualify не существует, никакая hostname квалификация не выполняется вообще. Специальный hostname * соответствует любому hostname, таким образом допуская Вам отобразить все главные ЭВМ, не упомянутые прежде в заданную по умолчанию область. Это должно использоваться только как последний вход. В Виртуальном Пивоваренном заводе, все главные ЭВМ были установлены так, чтобы использовать полностью квалифицированные имена области в адресах отправителя. Неквалифицированные адреса получателя, как рассматривается, находятся в uucp области, так что необходим только одиночный вход в файле qualify. # /usr/lib/smail/qualify, last changed Feb 12, 1994 by janet # * uucp 16. Sendmail + IDA 16.1 Введение в Sendmail + IDA Уже упоминалось, что Вы не реальный администратор системы Unix, пока вы не редактировали sendmail.cf файл. Также скажут что вы сумасшедший, если вы попытаетесь сделать это дважды :-) Sendmail - невероятно мощная программа. Также невероятно трудно узнавать и понимать ее для большинства людей. Любая программа, чье окончательное руководство (Sendmail, изданный O'Reilly and Associatеs) состоит из 792 страниц, отпугивает большинство людей. Sendmail + IDA - это другое. Это удаляет потребность редактировать всегда загадочный sendmail.cf файл и позволяет администратору определять пункт-специфическую маршрутизацию и конфигурацию адресации через относительно простые для понимания файлы - 284 - поддержки, называемые таблицами. sendmail + IDA может сохранять Вам много часов работы и спокойствия. Сравниваясь с другими главными средствами транспорта почты, не имеется ничего, что не может быть выполнено быстрее и проще с sendmail + IDA. Типичные вещи, которые необходимы, чтобы реализовать UUCP или Internet узел, станут простыми для выполнения. Конфигурации, которые обычно являются чрезвычайно трудными, просто создавать и поддержать. В этой запииси, текущая версия sendmail5.67b + IDA1.5 доступен через анонимный FTP из vixen.cso.uiuc.edu. Она компилируется без любого внесения исправлений, требуемого под Linux. Все файлы конфигурации, требуемые, чтобы получить исходники sendmail + IDA, чтобы компилировать, устанавливать, и выполнять под управлением Linux включены в newspak-2.2.tar.gz, который является доступным через анонимный FTP на sunsite.unc.edu в каталоге /pub/Linux/system/Mail. 16.2 Файлы Конфигурации --- Краткий обзор Традиционный sendmail установлен через файл конфигурации системы (обычно /etc/sendmail.cf или /usr/lib/sendmail.cf), который - не относится к любому языку, который вы видели прежде. Редактирование sendmail.cf файла, чтобы обеспечить настроенное поведение может быть хорошим опытом. Sendmail + IDA делает такую работу по существу делом прошлого при наличии всех опций конфигурации, с формированием изображений при помощи таблицы с довольно простым, чтобы понять синтаксис. Эти опции конфигурируются, выполнением m4 (процессора макркоманд) или dbm (процессора базы данных) в ряде файлов данных через Make-файлы, обеспеченные исходниками. Sendmail.cf файл определяет только заданное по умолчанию поведение системы. Виртуально вся специальная настройка выполнена через ряд необязательных таблиц а не непосредственно редактируя sendmail.cf файл. - 285 - 16.3 Sendmail.cf Файл Sendmail.cf файл для sendmail + IDA не редактируется непосредственно, а генерируется из m4 файла конфигурации, обеспеченного локальным администратором системы. В следующем, мы обратимся к нему как к sendmail.m4. Этот файл содержит несколько определений и иначе просто указывает на таблицы, где выполняется реальная работа. Вообще, необходимо определить только: + Имена путей и имена файлов, используемые в локальной системе. + Имена пункта электронной почты. + Который заданный по умолчанию mailer (и возможно smart host) желателен. Имеется большое разнообразие параметров, которые могут быть определены, чтобы установить поведение локального пункта сети. Эти опции конфигурации идентифицированы в файле ida/cf/OPTIONS в исходном каталоге. Файл sendmail.m4 для минимальной конфигурации (UUCP или SMTP со всей не-локальной почтой, передаваемой непосредственно соединенному smart-host) может быть в 10 или 15 строк, исключая комментарии. Mailertable определяет специальное поведение для отдаленных главных ЭВМ или областей. Uucpxtable включает получение почты UUCP на главные ЭВМ, которые находятся в формате DNS. Pathtable определяет UUCP пути на отдаленные главные ЭВМ или области. Uucprelays замыкает pathalias путь на общеизвестные отдаленные главные ЭВМ. Genericfrom преобразовывает внутренние адреса в обобщенные, видимые внешнему миру. Xaliases преобразовывает обобщенные адреса на\из допустимых внутренних. Decnetxtable преобразовывает RFC-822 адреса в адреса DECnet-стиля. - 286 - 16.3.1 Пример Файла Sendmail.m4 Файл sendmail.m4 для vstout на Виртуальном Пивоваренном заводе показывается ниже. Vstout использует SMTP, чтобы разговаривать со всеми главными ЭВМ на LAN Пивоваренного завода, и посылает всю почту для других адресатов к moria, host реле Internet, через UUCP. 16.3.2 Обычно Используемые sendmail.m4 Параметры Нескоторые предметы в файле sendmail.m4 требуются всегда; другие могут игнорироваться, если Вы можете избежать неприятностей со значениями по умолчанию. Следующие разделы описывают каждые из предметов в файле sendmail.m4 более подробно. dnl #------------------ SAMPLE SENDMAIL.M4 FILE ------------------ dnl # (the string 'dnl' is the m4 equivalent of commenting out a line) dnl # you generally don't want to override LIBDIR from the compiled in paths dnl #define(LIBDIR,/usr/local/lib/mail)dnl # where all support files go define(LOCAL MAILER DEF, mailers.linux)dnl # mailer for local delivery define(POSTMASTERBOUNCE)dnl # postmaster gets bounces define(PSEUDODOMAINS, BITNET UUCP)dnl # don't try DNS on these dnl #------------------------------------------------------------- dnl # define(PSEUDONYMS, vstout.vbrew.com vstout.UUCP vbrew.com) dnl # names we're known by define(DEFAULT HOST, vstout.vbrew.com)dnl # our primary 'name' for mail define(UUCPNAME, vstout)dnl # our uucp name dnl # dnl #------------------------------------------------------------- dnl # define(UUCPNODES, |uuname|sort|uniq)dnl # our uucp neighbors define(BANGIMPLIESUUCP)dnl # make certain that uucp define(BANGONLYUUCP)dnl # mail is treated correctly define(RELAY HOST, moria)dnl # our smart relay host define(RELAY MAILER, UUCP-A)dnl # we reach moria via uucp - 287 - dnl # dnl #--------------------------------------------------------------------dnl # dnl # the various dbm lookup tables dnl # define(ALIASES, LIBDIR/aliases)dnl # system aliases define(DOMAINTABLE, LIBDIR/domaintable)dnl # domainize hosts define(PATHTABLE, LIBDIR/pathtable)dnl # paths database define(GENERICFROM, LIBDIR/generics)dnl # generic from addresses define(MAILERTABLE, LIBDIR/mailertable)dnl # mailers per host or domain define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # paths to hosts we feed define(UUCPRELAYS, LIBDIR/uucprelays)dnl # short-circuit paths dnl # dnl #--------------------------------------------------------------------dnl # dnl # include the 'real' code that makes it all work dnl # (provided with the source code) dnl # include(Sendmail.mc)dnl # REQUIRED ENTRY !!! dnl # dnl #------------ END OF SAMPLE SENDMAIL.M4 FILE ------- 16.3.2.1 Предметы, которые Определяют Пути dnl #define(LIBDIR,/usr/local/lib/mail)dnl # where all support files go LIBDIR определяет каталог, где sendmail + IDA ожидает находить файлы конфигурации, различные dbm таблицы, и специальные локальные определения. В типичном двоичном распределении, это компилируется в sendmail binary и не должно быть явно установлено в файле send-mail.m4. Вышеупомянутый пример содержит dnl, который означает что эта строка - по существу только для уточнения инфрмации комментария. Чтобы изменить расположение файлов поддержки на другое, удалите dnl из вышеупомянутой строки, установите путь к желательному расположению, и восстановите, и повторно установите sendmail.cf файл. - 288 - 16.3.2.2 Определение Локального Mailer'а define(LOCAL MAILER DEF, mailers.linux)dnl # mailer for local delivery Большинство операционных систем обеспечивает программу для обработки локального получения почты. Программы такого рода для многих из главных вариантов Unix уже встроены в sendmail binary. В Linux, необходимо явно определить соответствующий локальный mailer, так как такая локальная программа не обязательно предоставлена в распределении, которое вы установили. Это определяется LOCAL MAILER DEF в файле sendmail.m4. Например, можно установить LOCAL MAILER DEF как mailers.linux. Следующий файл должен то быть установлен как mailers.linux в каталоге, указанном LIBDIR. Это явно определяет программу в Mlocal mailer с соответствующими параметрами, чтобы sendmail правильно принимал почту, направленную для локальной системы. Если Вы не эксперт sendmail, Вы возможно не захотите изменять следующий пример. # -- /usr/local/lib/mail/mailers.linux -- # (local mailers for use on Linux ) Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=10, A=sh -c $u Имеется также встроенное значение по умолчанию для deliver в Sendmail.mc файле, который включается в файл sendmail.cf. Чтобы определить его, Вы не должны использовать mailers.linux файл и взамен определить следующее в вашем файле sendmail.m4: dnl --- (in sendmail.m4) --- define(LOCAL MAILER DEF, DELIVER)dnl # mailer for local delivery К сожалению, Sendmail.mc принимает, что deliver установлен в /bin, что не так в Slackware1.1.1 (который устанавливает это в /usr/bin). В том случае вы нуждаетесь в фальшивке со связью или переустановить deliver из исходников в /bin. - 289 - 16.3.2.3 Обработка Bounced-почты define(POSTMASTERBOUNCE)dnl # postmaster gets bounces Многие абоненты находят, что важно гарантировать, что бы почта посылалась и получалась с гарантией 100 %. При исследовании sys-logd файлов регистрации полезен локальный администратор почты чтобы определить, была ли почта испорчена из-за ошибки пользователя или ошибки конфигурации на одной из включаемых систем. Определение POSTMASTERBOUNCE приводит к копии каждого плохого сообщения человеку, определенному как Постмастер системы. К сожалению, установка этого параметра также приводит к рассекречиванию текста сообщения, посылаемого Постмастеру. 16.3.2.4 Возможности Имени Области define(PSEUDODOMAINS, BITNET UUCP)dnl # don't try DNS on these Имеются отдельные известные сети, которые обычно указаны в адресах почты по историческим причинам, но это не допустимо для целей DNS. Определение PSEUDODOMAINS предотвращает бесполезные DNS попытки поиска, которые будут всегда терпеть неудачу. 16.3.2.5 Определение Локальной Системы define(PSEUDONYMS, vstout.vbrew.com vstout.UUCP vbrew.com)dnl # names we're known by define(DEFAULT HOST, vstout.vbrew.com)dnl # our primary 'name' for mail Часто, системы желают скрыть их истинное тождество, и служат как ворота почты, или получатют и обрабатывают почту, адресованную на " старые " имена. PSEUDONYMS определяет список всех hostname, для которых локальная система примет почту. - 290 - DEFAULT HOST определяет hostname, который появится при возникновении сообщений на локальном host. 16.3.2.6 Uucp-зависимые Аспекты define(UUCPNAME, vstout)dnl # our uucp name define(UUCPNODES, |uuname|sort|uniq)dnl # our uucp neighbors define(BANGIMPLIESUUCP)dnl # make certain that uucp define(BANGONLYUUCP)dnl # mail is treated correctly Часто, системы известны под одним именем для целей DNS и другим для целей UUCP. UUCPNAME разрешает Вам определять различные hostname, которые появляются в заголовках выхода почты UUCP. UUCPNODES определяет команды, которые возвращают список hostnames для систем, с которыми мы соединены непосредственно с через UUCP соединения. BANGIMPLIESUUCP и BANGONLYUUCP гарантирует, что почта, адресованная с UUCP синтаксисом обрабатывается согласно UUCP, а не более современному DNS, используемому сегодня в Internet. 16.3.2.7 Relay-Системы и Mailer'ы define(RELAY HOST, moria)dnl # our smart relay host define(RELAY MAILER, UUCP-A)dnl # we reach moria via UUCP RELAY HOST определяет UUCP hostname интеллектуальной соседней системы (способной послать почты в любую сеть мира). RELAY MAILER определяет mailer, используемый, чтобы передать туда сообщения. Важно обратить внимание, что устанавливающий эти параметры приводит к посылке вашей почты к этой отдаленной системе, которая будет воздействовать на загрузку их системы. Убедитесь, что вы получили явное соглашение отдаленного Постмастера прежде, чем Вы конфигурируете вашу систему, чтобы использовать другую систему как универсальный relay host. - 291 - 16.3.2.8 Различные Таблицы Конфигурации define(ALIASES, LIBDIR/aliases)dnl # system aliases define(DOMAINTABLE, LIBDIR/domaintable)dnl # domainize hosts define(PATHTABLE, LIBDIR/pathtable)dnl # paths database define(GENERICFROM, LIBDIR/generics)dnl # generic from addresses define(MAILERTABLE, LIBDIR/mailertable)dnl # mailers per host or domain define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # paths to hosts we feed define(UUCPRELAYS, LIBDIR/uucprelays)dnl # short-circuit paths С этими макркомандами, Вы можете изменять расположение, где sendmail + IDA ищет различные dbm таблицы, которые определяют поведение системы. Вообще нужно оставить их в LIBDIR. 16.3.2.9 Главный Файл Sendmail.mc include(Sendmail.mc)dnl # REQUIRED ENTRY !!! Авторы sendmail + IDA обеспечивают файл Sendmail.mc, который содержит "внутренности" того, что становится файлом sendmail.cf. Периодически выпускаются новые версии, чтобы установить ошибки или добавлить функциональные возможности без полного выпуска и перетрансляции sendmail из исходников. Важно не редактировать этот файл. 16.3.2.10 Так которые Входы Действительно требуются? Если не используются dbm таблицы, sendmail + IDA передает почту через DEFAULT MAILER (и возможно RELAY HOST и RELAY MAILER) определенный в файле sendmail.m4, используемом, чтобы генерировать sendmail.cf. Легко можно отменить это поведение через входы в domaintable или uucpxtable. Виртуально все системы должны установить DEFAULT HOST, макркоманды PSEUDONYMS, которые определяют каноническиое имя пункта, и DEFAULT MAILER. Если все что Вы имеете - это relay host и relay mailer, Вы не должны устанавлвать эти значения по умолчанию, так как это работает автоматически. - 292 - UUCP главные ЭВМ будут возможно также должны установить UUCPNAME как их официальное имя UUCP. Они также возможно установят RELAY MAILER, и RELAY HOST, которые дают возможность маршрутизации smart-host через relay почту. Транспорт почты, который нужно использовать определен в RELAY MAILER и должен обычно быть UUCP-A для UUCP абонента. Если ваш пункт только SMTP и использует "Domain Name Service ", Вам следует заменить DEFAULT MAILER на TCP-A и возможно удалить СТРОКИ RELAY HOST и RELAY MAILER. 16.4 Просмотр Sendmail + IDA Таблиц Sendmail + IDA обеспечивает ряд таблиц, которые позволяют Вам отменять заданное по умолчанию поведение sendmail (заданное в файле sendmail.m4) и определять специальное поведение для уникальных ситуаций, отдаленных систем, и Сетей. Эти таблицы обрабатываются dbm используя Make-файл, обеспеченный распределением. Большинство абонентов будет нуждаться в некоторых из этих таблиц. Если ваш пункт не требует этих таблиц, самая простая вещь, возможно, сделать их файлами нулевой длины (командой touch) и использовать заданный по умолчанию Make-файл в LIBDIR, а не редактировать Make-файл непосредственно. 16.4.1 Mailertable Mailertable определяет специальное обращение для специфических главных ЭВМ или областей, основанных на отдаленном host или сетевом имени. Это часто используется на абоненте Internet, чтобы выбрать промежуточный relay host для почты или gateway, чтобы достигнуть отдаленной сети, и определить специфический протокол (UUCP или SMTP). UUCP абонент вообще не должен использовать этот файл. Порядок важен. Sendmail читает файл, нисходяще и обрабатывает сообщения согласно первому правилу, которому оно соответствует. Так что вообще нужно поместить наиболее явные правила наверху файла и более обобщенных правил ниже. - 293 - Предположите, что Вы хотите направлять всю почту для отделения Информатики в Университете Groucho Marx через UUCP relay host ada. Чтобы сделать так, Вам нужен пункт в mailertable, который походит на следующее: # (in mailertable) # # forward all mail for the domain .cs.groucho.edu via UUCP to ada UUCP- A,ada .cs.groucho.edu Предположите, что Вы хотите чтобы вся почта к groucho.edu области шла к другому relay host - bighub. Расширенные входы mailertable выглядели бы подобно: # (in mailertable) # # forward all mail for the domain cs.groucho.edu via UUCP to ada UUCP-A,ada .cs.groucho.edu # # forward all mail for the domain groucho.edu via UUCP to bighub UUCP- A,bighub .groucho.edu Как упомянуто выше, порядок важен. Реверсирование порядка из двух правил, показанных выше приводит к передаче всей почты к .cs.groucho.edu через более обобщенный bighub путь вместо явного ada пути, который действительно желателен. # (in mailertable) # # forward all mail for the domain .groucho.edu via UUCP to bighub UUCP- A,bighub .groucho.edu # # (it is impossible to reach the next line because # the rule above will be matched first) UUCP-A,ada .cs.groucho.edu # В примерах mailertable выше, UUCP-A mailer заставит sendmail использовать UUCP получение с заголовками области. - 294 - Запятая между mailer'ом и отдаленной системой сообщает о передаче сообщения к ada для получения. Mailertable входы(пункты) имеют формат: mailer delimiter relayhost host or domain Имеется ряд возможных mailer'ов. Различия - вообще в том, как они обрабатывают адреса. Типичные mailer'ы - TCP-A (TCP/IP с адресами - стиля Internet), TCP-U (TCP/IP с адресами uucp-стиля), и UUCP-A (UUCP с адресами -стиля Internet). Символ, который отделяет mailer от host слева в строке mailertable, определяет, как адрес изменяется mailertable. ! Отметка восклицания удаляет hostname получателя перед пересылкой к mailer'у. Это может использоваться, когда Вы хотите послать почту в неконфигурированный отдаленный пункт. , Запятая не изменяет адрес всегда. Сообщение просто будет послано через заданный mailer заданному relay host. : Двоеточие удаляет hostname получателя только, если имеются промежуточные главные ЭВМ между Вами и адресатом. Таким образом из foo!bar!Joe будет удален foo, в то время как xyzzy!Janet останется неизменным. 16.4.2 Uucpxtable Обычно, почта на главные ЭВМ с полностью квалифицированными именами области передается в стиле Internet (SMTP), используя Domain Name Service (DNS), или через relay host. Uucpxtable вынуждает получение через маршрутизацию UUCP, преобразуя имя в отдаленный hostname UUCP-стиля. Это часто используется, когда ваш узел служит для продвижения данных почты для пункта или области или когда Вы желаете послать почту через прямую и надежную связь UUCP, а не через множество абонентов через заданный по умолчанию mailer и любые промежуточные системы и сети. Абоненты UUCP, которые разговаривают с соседями по UUCP, которые используют заголовки почты с определенным именем области, использовали бы этот файл, чтобы вынудить получение почты через прямую UUCP двухточечную связь между двумя системами, а не использовали бы менее - 295 - прямой маршрут через RELAY MAILER и RELAY HOST или через DEFAULT MAILER. Абонент Internet, который не входит в UUCP может не использовать uucpxtable. Предположите, что Вы обеспечиваете обслуживание пересылки почты к системе, называемой sesame.com в DNS и sesame в картах UUCP. Вы нуждались бы в следующем входе uucpxtable, чтобы вынудить почту для их host пройти через ваше прямое соединение UUCP. #============== /usr/local/lib/mail/uucpxtable ============ # Mail sent to joe@sesame.com is rewritten to sesame!joe and # therefore delivered via UUCP # sesame sesame.com # #---------------------------------------------------------- 16.4.3 pathtable Pathtable используется, чтобы определить явную маршрутизацию на отдаленные главные ЭВМ или сети. Файл pathtable должен быть в синтаксисе pathalias-стиля, сортируемом в алфавитном порядке. Два поля на каждой строке должны отделиться реальной МЕТКОЙ ТАБУЛЯЦИИ. Большинство систем не будет нуждаться в любых входах pathtable. #=============== /usr/local/lib/mail/pathtable ================ # # this is a pathalias-style paths file to let you kick mail to # UUCP neighbors to the direct UUCP path so you don't have to # go the long way through your smart host that takes other traffic # # you want real tabs on each line or m4 might complain # # route mail through one or more intermediate sites to a remote # system using UUCP-style addressing. # sesame!ernie!%s ernie # - 296 - # forwarding to a system that is a UUCP neighbor of a reachable # internet site. # swim!%s@gcc.groucho.edu swim # # The following sends all mail for two networks through different # gateways (see the leading '.' ?). # In this example, "uugate" and "byte" are specific systems that serve # as mail gateways to the .UUCP and .BITNET pseudo-domains respectively # %s@uugate.groucho.edu .UUCP byte!%s@mail.shift.com .BITNET # #=================== end of pathtable ======================= 16.4.4 domaintable Domaintable вообще используется, чтобы вынудить некоторое поведение после того, как поиск DNS произошел. Это разрешает администратору делать короткие имена доступными для обычно вызываемых систем или областей, заменяя такое имя на соответствующее автоматически. Это может также использоваться, чтобы заменить неправильный host или имена области на " правильные ". Большинство абонентов не будет нуждаться в любых входах domaintable. Следующий пример показывает, как заменить неправильные адреса на правильный адрес: #============= /usr/local/lib/mail/domaintable ================= # # brokenhost.correct.domain brokenhost.wrong.domain # # #=================== end of domaintable ======================== 16.4.5 aliases Aliases(специальные возможности) разрешают ряд вещей: - 297 - + Они обеспечивают короткое имя или общеизвестное имя для почты, которая будет адресована к одному или большому количеству людей. + Они вызывают программу с сообщением почты как ввод для программы. + Они посылают почту в файл. Все системы требуют aliases для Постмастера. Всегда чрезвычайно важна защита при определении aliases, которые вызывают программы или запись к программам, так как sendmail вообще выполняет setuid-root. Изменения в файле aliases, не воздействуют до команды # /usr/lib/sendmail -bi выполняемой, чтобы формировать требуемые dbm таблицы. Это может также быть выполнено, выполняя команду newaliases, обычно из cron. #--------------------- /usr/local/lib/mail/aliases ------------------ # # demonstrate commonly seen types of aliases # usenet: janet # alias for a person admin: joe,janet # alias for several people newspak-users: :include:/usr/lib/lists/newspak # read recipients from a file changefeed: | /usr/local/lib/gup # alias that invokes a program complaints: /var/log/complaints # alias that writes mail to a file # # The following two aliases must be present to be RFC-compliant. # It is important to have them resolve to 'a person' # who reads mail routinely. # postmaster: root # required entry MAILER-DAEMON: postmaster # required entry # - 298 - #------------------------------------------------------------------- 16.4.6 Редко Используемые Таблицы Следующие таблицы доступны, но довольно нечасто используются. Консультируйтесь с документацией, которая приходит с sendmail + IDA для подробностей. Uucprelays Файл uucprelays используется для определения " короткого " пути UUCP к особенно хорошо известному абоненту, а не используя путь через ряд host или ненадежный путь, сгенерированный, обрабатывая карты UUCP с pathalias. Genericfrom и xaliases Файл genericfrom скрывает локальные usernames и адреса от внешнего мира, автоматически преобразуя(конвертируя) локальные usernames в обобщенные адреса отправителя, которые не соответствуют внутреннему usernames. Связанная утилита xalparse автоматизирует порождение файла genericfrom и файла aliases так, чтобы и входящие и исходящие username трансляции произошли из главного файла xaliases. Decnetxtable перезаписывает адреса с определенным именем области в адреса decnet-стиля, очень похоже на domaintable, может использоваться, чтобы перезаписать адреса с не определенным именем области в адреса с определенным именем области smtp-стиля. 16.5 Установка sendmail В этом разделе, мы рассмотрим как установить типичное двоичное распределение sendmail + IDA, и что должно быть выполнено, чтобы сделать его локализованным и функциональным. Текущее двоичное распределение sendmail + IDA для Linux может быть получено из sunsite.unc.edu в /pub/Linux/system/Mail. Даже если Вы имеете более раннюю версию sendmail, я строго рекомендую, чтобы Вы использовали sendmail5.67b + IDA1.5. Если Вы формируете sendmail из исходников, Вы должны следовать советам в README, включенном в исходное распределение. Текущие исходники sendmail + IDA доступны из vixen.cso.uiuc.edu. Чтобы формировать - 299 - sendmail + IDA на Linux, Вы также нуждаетесь в Linux -специфических файлах конфигурации из newspak-2.2.tar.gz, который является доступным на sun- site.unc.edu в каталоге /pub/Linux/system/Mail. Если Вы предварительно установили smail или другое средство получения почты, вам возможно нужно удалить (или переименовать) все файлы из smail для безопасности. 16.5.1 Извлечение двоичного распределения Сначала, Вы должны разпаковать файл архива в некотором безопасном расположении: $ gunzip -c sendmail5.65b+IDA1.5+mailx5.3b.tgz | tar xvf - Если Вы имеете "современный" tar, например из недавнего Slackware, Вы можете сделать tar -zxvf filename.tgz и получить те же самые результаты. Распаковка архива создает каталог, именованный sendmail5.65b +IDA1.5+ mailx5.3b. В этом каталоге, Вы находите комплектное оборудование sendmail + IDA плюс mailx. Весь paths файл ниже этого каталога отражает расположение, где файлы должны быть установлены, так что безопасно подготовить команду tar: # cd sendmail5.65b+IDA1.5+mailx5.3b # tar cf - . | (cd /; tar xvvpoof -) 16.5.2 Формирование sendmail.cf Чтобы сформировать файл sendmail.cf, настроенный для вашего пункта, Вы должны сщздать файл sendmail.m4, и обработать его с m4. В /usr/local/lib/mail/CF, Вы найдете типовой файл называемый sample.m4. Копируйте его в yourhostname.m4, и редактируйте, чтобы отразить ситуацию вашего пункта. В текущем разделе, я буду давать короткий краткий обзор макркоманд, которые Вы должны изменить. Для полного описания того, что они делают, пожалуйста, обратитесь к более раннему обсуждению sendmail.m4. LOCAL MAILER DEF Определяет файл, который определяет mailer для локального получения почты. См. раздел " Определение Локального Mailer'а " выше. - 300 - PSEUDONYMS Определяет все имена, вашего локального host. DEFAULT HOST Помещается в ваше полностью квалифицированное имя области. Это имя появится как ваш hostname во всей выходящей почте. UUCPNAME Помещается в ваше неквалифицированное hostnmae. RELAY HOST и RELAY MAILER Если Вы говорите UUCP smart-host установить RELAY HOST для UUCP имени вашего " интеллектуально зависимого " uucp соседа. Используйте UUCP-A mailer, если Вы хотите заголовки с определенным именем области. DEFAULT MAILER Если Вы находитесь в Internet и используете DNS, Вы должны установить его как TCP-A. Это сообщает, чтобы sendmail использовал TCP-A mailer, который передает почту через SMTP используя нормальную RFC адресацию для конверта. Абонент Internet возможно не должен определять RELAY HOST or RELAY MAILER. Чтобы создать файл sendmail.cf, выполните команду # make yourhostname.cf Она обработает файл yourhostname.m4 и создаст yourhostname.cf из него. Затем, Вы должны проверить, делает ли файл конфигурации, который вы создали, то, что Вы ожидаете. Это объясняется в следующих двух разделах. Если вы удовлетворены его поведением, скопируйте его на место командой: # cp yourhostname.cf /etc/sendmail.cf Теперь ваша система sendmail готова к действиям. Поместите следующую строку в соответствующем файле запуска (вообще /etc/rc.inet2). Вы можете также выполнить ее вручную, чтобы запустить его теперь. # /usr/lib/sendmail -bd -q1h 16.5.3 Тестирование файла sendmail.cf - 301 - Чтобы включить " проверочный " режим, Вы вызываете sendmail с -bt флагом. Заданный по умолчанию файл конфигурации - файл sendmail.cf, который установлен на системе. Вы можете проверять альтернативный файл, используя -Cfilename опцию. В следующих примерах, мы проверяем vstout.cf файл конфигурации, сгенерированный из файла vstout.m4. # /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE Enter
[Note: No initial ruleset 3 call] > Следующие тесты гарантируют, что sendmail способен получать всю почту пользователей вашей системы. Во всех случаях результат теста должен быть тот же самый и указывать на локальное имя системы с ЛОКАЛЬНЫМ mailer'ом. Сначала проверите, как почта была бы передана локальному пользователю. # /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE Enter
[Note: No initial ruleset 3 call] > 3,0 me rewrite: ruleset 3 input: me rewrite: ruleset 7 input: me rewrite: ruleset 9 input: me rewrite: ruleset 9 returns: < me > rewrite: ruleset 7 returns: < > , me rewrite: ruleset 3 returns: < > , me rewrite: ruleset 0 input: < > , me rewrite: ruleset 8 input: < > , me rewrite: ruleset 20 input: < > , me rewrite: ruleset 20 returns: < > , @ vstout . vbrew . com , me rewrite: ruleset 8 returns: < > , @ vstout . vbrew . com , me rewrite: ruleset 26 input: < > , @ vstout . vbrew . com , me rewrite: ruleset 26 returns: $# LOCAL $@ vstout . vbrew . com $: me - 302 - rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me Вывод показывает как sendmail обрабатывает адрес внутренне. Он вручается различным ruleset, которые анализируют его, вызывают другой ruleset по очереди, и разбивают его в компоненты. В нашем примере, мы передали мой адрес к ruleset 3 и 0 (это - значение из 3,0 введенное перед адресом). Последняя строка показывает анализируемый адрес возвращаемый ruleset 0. Затем, проверите почту пользователя вашей системы с синтаксисом UUCP. # /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE Enter
[Note: No initial ruleset 3 call] > 3,0 vstout!me rewrite: ruleset 3 input: vstout ! me [...] rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me > Затем, проверите почту, адресованную пользователю вашей системы с синтаксисом Internet к вашему полностью квалифицированному hostname. # /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE Enter
[Note: No initial ruleset 3 call] > 3,0 me@vstout.vbrew.com rewrite: ruleset 3 input: me @ vstout . vbrew . com [...] rewrite: ruleset 0 returns: $# LOCAL $@ vstout . vbrew . com $: me > Вы должны повторить вышеупомянутые два теста с каждым из имен, которые Вы определили в PSEUDONYMS и параметрах DEFAULT NAME в вашем файле sendmail.m4. Наконец, проверите что Вы можете отправлять почту вашему relay host. # /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE - 303 - Enter
[Note: No initial ruleset 3 call] > 3,0 fred@moria.com rewrite: ruleset 3 input: fred @ moria . com rewrite: ruleset 7 input: fred @ moria . com rewrite: ruleset 9 input: fred @ moria . com rewrite: ruleset 9 returns: < fred > @ moria . com rewrite: ruleset 7 returns: < @ moria . com > , fred rewrite: ruleset 3 returns: < @ moria . com > , fred rewrite: ruleset 0 input: < @ moria . com > , fred rewrite: ruleset 8 input: < @ moria . com > , fred rewrite: ruleset 8 returns: < @ moria . com > , fred rewrite: ruleset 29 input: < @ moria . com > , fred rewrite: ruleset 29 returns: < @ moria . com > , fred rewrite: ruleset 26 input: < @ moria . com > , fred rewrite: ruleset 25 input: < @ moria . com > , fred rewrite: ruleset 25 returns: < @ moria . com > , fred rewrite: ruleset 4 input: < @ moria . com > , fred rewrite: ruleset 4 returns: fred @ moria . com rewrite: ruleset 26 retu rns < @ moria . com > , fred rewrite: ruleset 0 returns: $# UUCP-A $@ moria $: < @ moria . com > , fred > 16.5.4 Помещение всего вместе - Интеграционная проверка sendmail.cf и таблиц Вы проверили что почта будет иметь желательное заданное по умолчанию поведение и что вы будете способны и послать и получить законно адресованную почту. Чтобы завершить установку, может быть необходимо создать соответствующие dbm таблицы, чтобы получить желательные конечные результаты. После создания таблиц, которые требуются для вашего пункта, Вы должны, обработать их через dbm созданием make в каталоге, содержащем таблицы. Если Вы являетесь только UUCP узлом, Вы не должны создвать таблицы, упомянутые в README.linux файле. Вы будете должны только подправить файлы так, чтобы Make-файл работал. Если вы в UUCP и Вы разговариваете с абонентами в дополнение к вашему smart-host, вы будете должны добавить входы uucpxtable для каждого - 304 - (или почта к ним также пройдет через smart host) и выполнить dbm для пересмотренного uucpxtable. Сначала, Вы должны удостовериться что почта через ваш RELAY HOST, посылается им через RELAY MAILER. # /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE Enter
[Note: No initial ruleset 3 call] > 3,0 fred@sesame.com rewrite: ruleset 3 input: fred @ sesame . com rewrite: ruleset 7 input: fred @ sesame . com rewrite: ruleset 9 input: fred @ sesame . com rewrite: ruleset 9 returns: < fred > @ sesame . com rewrite: ruleset 7 returns: < @ sesame . com > , fred rewrite: ruleset 3 returns: < @ sesame . com > , fred rewrite: ruleset 0 input: < @ sesame . com > , fred rewrite: ruleset 8 input: < @ sesame . com > , fred rewrite: ruleset 8 returns: < @ sesame . com > , fred rewrite: ruleset 29 input: < @ sesame . com > , fred rewrite: ruleset 29 returns: < @ sesame . com > , fred rewrite: ruleset 26 input: < @ sesame . com > , fred rewrite: ruleset 25 input: < @ sesame . com > , fred rewrite: ruleset 25 returns: < @ sesame . com > , fred rewrite: ruleset 4 input: < @ sesame . com > , fred rewrite: ruleset 4 returns: fred @ sesame . com rewrite: ruleset 26 returns: < @ sesame . com > , fred rewrite: ruleset 0 returns: $# UUCP-A $@ moria $: < @ sesame . com > , fred > Если Вы имеете UUCP соседей кроме вашего RELAY HOST, Вы должны гарантировать, что почта к ним имеет соответствующее поведение. Почта, адресованная с синтаксисом стиля UUCP для host, с которым Вы говорите по UUCP, должна идти непосредственно к ним (если Вы явно не предотвращаете это входом domaintable). Примите, что swim host - прямой сосед UUCP ваших соседей. И при подаче swim!Fred sendmail должен произвести следующий результат: - 305 - # /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE Enter
[Note: No initial ruleset 3 call] > 3,0 swim!fred rewrite: ruleset 3 input: swim ! fred [...lines omitted...] rewrite: ruleset 0 returns: $# UUCP $@ swim $: < > , fred > Если Вы имеете входы uucpxtable, чтобы вынудить получение по UUCP для некоторых UUCP соседей, которые посылают почту стиля Internet с определенным именем области, это также должно быть проверено. # /usr/lib/sendmail -bt -Cvstout.cf ADDRESS TEST MODE Enter
[Note: No initial ruleset 3 call] > 3,0 dude@swim.2birds.com rewrite: ruleset 3 input: dude @ swim . 2birds . com [...lines omitted...] rewrite: ruleset 0 returns: $# UUCP $@ swim . 2birds $: < > , dude > 16.6 Администрирование и Глупые Приемы Почты Теперь, когда мы обсудили теорию конфигурирования, установки, и тестирования sendmail + IDA, давайте рассмотрим несколько моментов, чтобы изучить вещи, которые случаются обычно в жизни администратора почты. Отдаленные системы иногда ломаются. Ошибка модема или сбой телефонных линий, определения DNS установлены неправильно из-за человеческой ошибки. Сети падают неожиданно. В таких случаях, администраторы почты должны знать, как реагировать быстро, действенно, и безопасно схранить почту, текущую через альтернативные маршруты, пока отдаленные системы или поставщики услуг не могут восстановить нормальные услуги. Остальная часть этой главы предназначена, чтобы обеспечить Вас решениями для наиболее частыми " критическми состояниями электронной почты ". - 306 - 16.6.1 Пересылка Почты В Отдаленную Систему Чтобы отправлять почту для специфического host или области в обозначенную отдаленную систему, Вы вообще используете mailertable. Например, чтобы отправить почту для backwood.org к их закулисной системе GATEWAY UUCP, вы поместили следующий вход в mailertable: UUCP-A,backdoor backwood.org 16.6.2 Почта Для Неконфигурированного Отдаленного Абонена Часто, главные ЭВМ Internet будут иметь проблему при получении почты в не-конфигурированном отдаленном абоненте. Имеются отдельные варианты этой проблемы, но общий признак - почта передается отдаленной системой или никогда добирается туда вообще. Эти проблемы могут помещать локального администратора системы в плохую позицию, потому что ваши пользователи вообще не заботятся о том что Вы лично не управляете каждой системой во всем мире (или не знаете, как получить отдаленного администратора, чтобы установить проблему). Они только знают, что их почта не проходила желательному получателю на другом конце и что вы являетесь вероятным виновным человеком. Конфигурация отдаленного пункта - их проблема, не ваша. Во всех случаях, убедитесь, что ваш пункт способен связаться с не-конфигурированным отдаленным пунктом. Если Вы не можете войти в контакт с Постмастером в отдаленном пункте, чтобы установить их конфигурацию своевременным способом, Вы имеет две опции. + Вообще возможно вынудить послать почту в отдаленную систему успешно, хотя, так как отдаленная система не-конфигурирована, ответы на отдаленном конце могут не работать ..., но то это - проблема отдаленного администратора. Вы можете устранить плохие заголовки в конверте на ваших исходящих сообщениях только используя вход domaintable для их области или host, что приводит к правке недопустимой информации, при выходе почты из вашего пункта: braindead.correct.domain.com braindead.wrong.domain.com - 307 - Знак ! в mailertable передает почту их отдаленному пункту, как будто она инициировалось локально на их системе. Обратите внимание, что это изменяет только адрес конверта, так что соответствующий адрес возврата будет все еще обнаруживаться в сообщении. TCP!braindead.correct.domain.com braindead.wrong.domain.com 16.6.3 Почта, которая будет перемещена через UUCP В идеальном мире (из перспективы Internet), все главные ЭВМ будут иметь записи в Domain Name Service (DNS) и посылать почту с полностью квалифицированными именами области. Если Вы, случается, передаете через UUCP такому пункту, Вы можете вынуждать почту пройти двухточечное соединение UUCP, а не через ваш заданный по умолчанию mailer по существу " опуская область " их hostname через uucpxtable. Чтобы вынуждать получение через UUCP для sesame.com, Вы поместили бы следующее в ваш uucpxtable: # un-domainize sesame.com to force UUCP delivery sesame sesame.com Результат - тот sendmail, то определит (через UUCPNODES в файле sendmail.m4) что Вы непосредственно соединены с отдаленной системой, и будет ставить в очередь почту для получения через UUCP. 16.6.4 Предотвращение Передачи Почты через UUCP Противоположное условие также происходит. Часто системы могут иметь ряд прямых соединений UUCP, которые редко используются или они не так надежны и всегда доступны как заданный по умолчанию mailer или relay host. Например, в Seattle области имеется ряд систем, которые обменивают различные распределения Linux через анонимный UUCP, когда эти распределения выпускаются. Эти системы говорят по UUCP только когда необходимо, так что вообще быстрее и более надежно послать почту через общие (и всегда доступные) главные ЭВМ. Легко можно предотвратить получение UUCP почты от host, с которым Вы непосредственно соединены. Если отдаленная система имеет полностью - 308 - квалифицированное имя области, Вы может добавить вход в domaintable: # prevent mail delivery via UUCP to a neighbor snorkel.com snorkel Это заменит любое вхождение имени UUCP на FQDN, и таким образом предотвратит соответствие строкой UUCPNODES в файле sendmail.m4. Результат - почта будет идти через RELAY MAILER и RELAY HOST (или DEFAULT MAILER). 16.6.5 Выполнение Очереди Sendmail по требованию Для обработки поставленных в очередь сообщений немедленно, просто набейте "/usr/lib/runq ". Это заставляет sendmail выполнить очередь заданий, немедленно а не ждать следующего планируемого. 16.6.6 Статистика Почты Многие администраторы пунктов (и персонал) заинтересованы объемом почты, передающейся к, из, и через локальный пункт. Имеется ряд способов определить количество траффика почты. + Sendmail приходит с утилитой, называемой mailstats, которая читает файл называемый /usr/local/lib/mail/sendmail.st и сообщает число сообщений и число байтов, перемещенных каждым из mailer'ов используемых в файле sendmail.cf. Этот файл должен быть создан локальным администратором вручную для регистрации sendmail. Текущие показатели будут очищены, удаляя и вновь создавая sendmail.st файл. Один способ состоит в том, чтобы делать следующее: # cp /dev/null /usr/lib/local/mail/sendmail.st + Возможно самый лучший способ делать качественный отчет относительно того, кто использует почту и сколько объема проходит к, из, и через локальную систему, состоит в том, чтобы включить отладку почты как syslogd (8). Вообще, это означает выполнение /etc/syslogd daemon из вашего файла запуска системы (который Вы должны создать во всяком случае), и добавление строки к /etc/syslog.conf (5) который который выглядит примерно: mail.debug /var/log/syslog.mail - 309 - Если Вы используете mail.debug и отправляете по почте большие объемв, вывод syslog может стать большим. Выходные файлы из syslogd вообще должны сдвигаться или очищаться на стандартном базисе из crond (8). Имеется ряд обычно доступных утилит, которые могут подводить итог вывода регистрации почты из syslogd. Одна из наиболее известных утилит - syslog-stat.pl, команда perl, которая распределена с sendmail + IDA. 16.7 Смешивание и Соответствие Двоичных Распределений Не имеется никакой истинной стандартной конфигурации транспорта электронной почты и средств получения и не имеется никакой " истинной структуры каталога. " Соответственно, необходимо гарантировать, что все различные части системы (USENET новости, почта, TCP/IP) договариваются о расположении локальной программы получения почты (lmail, deliver, и т.д.), отдаленной программы получения почты (rmail), и программы транспорта почты (sendmail или smail). Такие предположения вообще не зарегистрированы, хотя использование команды может помогать определять то, какие файлы и каталоги ожидаются. Следующее - некоторые проблемы, которые мы видели в прошлом с некоторыми доступными двоичными распределениями и исходниками. + Некоторые версии распределения NET-2 TCP/IP имеют услуги, определенные для программы, называемой umail а не sendmail. + Имеются различные порты elm и mailx, которые ищут средство получения /usr/bin/smail а не sendmail. + Sendmail + IDA имеет встроенный локальный mailer для deliver, но ожидает, что он расположен в /bin, а не в более типичном расположении Linux /usr/bin. 16.8 Где Получить Подробную информацию Имеется много мест, где Вы можете искать подробную информацию относительно sendmail. См. Linux MAIL Howto зарегистрированный регулярно как comp.answers. Это также доступно для анонимного FTP на rtfm.mit.edu. Однако, окончательное место находится в sendmail + IDA. Смотрите в каталоге - 310 - ida/cf ниже исходного каталога файлы DBM-GUIDE, OPTIONS, и Sendmail.mc. 17. Netnews 17.1 Usenet Хронология Идея относительно сетевых новостей была рождена в 1979 когда два студента Tom Truscott и Jim Ellis подумали об использовании UUCP чтобы соединять машины с целью информационного обмена среди пользователей Unix. Они установили малую сеть из трех машин на Севере Каролины. Первоначально, траффик был обработан рядом команд оболочки (позже перезаписан в C), но они никогда не были выпущены к общему. Они были быстро заменены на "А" новости, первый общий выпуск программного обеспечения новостей. "А" новости не был разработаны, чтобы обработать больше чем несколько статей на группу в день. Когда объем продолжил расти, это было перезаписано Мark Horton и Matt Glickman, и названо "B" выпуск (a.k.a. Bnews). Первый общий выпуск Bnews был - версия 2.1 в 1982. Он расширялся непрерывно, с отдельными новыми добавляемыми возможностями. Текущая версия - Bnews 2.11. Она медленно устаревает. Другая перезапись была выполнена и выпускалась в 1987 Geoff Collyer и Henry Spencer; это - выпуск " "C", или Новости C. Выпуск Эффективности - Новости C, версия в настоящее время включенная в большинство реализаций Linux. Все выпуски новостей до " " C " " является прежде всего целенаправленным для сетей UUCP, хотя они могут использоваться в других средах также. Эффективная передача новостей над сетями подобно TCP/IP, DECNet требует новой схемы. Это было причиной почему, в 1986 появился " Сетевой Протокол передачи Новостей '', NNTP. Он основан на сетевых соединениях, и определяет ряд команд, чтобы в интерактивном режиме передать и отыскать статьи. Имеется ряд nntp-основанных приложений, доступных из Сети. Один из них - nntpd пакет Brian Barber и Phil Lapsley, Другие NNTP пакеты - INN, или Новости Internet. Это не просто передная часть, но система новостей с собственными правилами. 17.2 Что является Usenet, Во всяком случае? - 311 - Одно из наиболее поразительных предложений относительно Usenet - то, что это не часть любой организации, и не имеет централизованной сетевой власти для управления. Фактически, это - все Usenet сведения, кроме технического описания. Вы не можете определять, что это, Вы можете только сказать чем это не является. С риском звучать глупо, можно было определить Usenet как сотрудничество отдельных абонентов, которые обмениваются Usenet новостями. Базисный модуль Usenet новостей - статья. У статьи есть так называемый заголовок. Это очень похоже на формат заголовка почты, установленный в Internet, стандарт RFC 822, в котором это состоит из отдельных строк текста, каждое начинается с имени поля, завершенного двоеточием, которое сопровождается значением поля. (1) Статьи представлены на рассмотрение в одну или большое количество newsgroups. Можно рассматривать newsgroup форумом для статей в отношении общего предмета. Все newsgroups организованы в иерархии, с именем каждой группы, указывающим место в иерархии. Например, любой может видеть из имени newsgroup, что comp.os.linux.announce используется для объявлений относительно операционной системы Linux. 17.3 Как в Usenet Обрабатывают Новости? Сегодня, Usenet вырос до огромных размеров. Узлы, которые несут все netnews обычно передают что - нибудь вроде несерьезных шестидесяти мегабайтов в день. (2) Конечно это требует намного больше чем обмен файлами. Так что давайте рассмотрим способ, которым большинство системах Unix обрабатывает Usenet новости. Новости распределены через сеть различными transports. Как историческая среда используется UUCP, но сегодня основной траффик несет абонент Internet. Используемый алгоритм маршрутизации называется лавинной маршрутизацией: Каждый пункт поддерживает ряд связей к другому абоненту. Любая статья, сгенерированная или полученная локальной системой новостей будет послана к ним. Чтобы отличать статьи и распознавать дубликаты, Usenet статьи должны нести ID сообщения (заданный в поле заголовка Message-ID:), которое объединяет имя пункта регистрации и серийный номер в " ''. Для каждой обработанной статьи, система новостей регистрирует ее ID в файл хронологии, в котором проверяются все прибывающие статьи. - 312 - Явное число статей обычно требует, чтобы к вышеупомянутой схеме были сделаны уточнения. На сетях UUCP, обычто статьи за период времени объединяются в одиночный файл, который сжимается и посылается к отдаленному пункту. Это вызывается, пакетирование. Абонент, которые находятся в Internet вообще полагается на TCP/IP программное обеспечение, которое использует Сетевой Протокол передачи Новостей, NNTP. Он передает новости между узлами и обеспечивает Usenet доступ к отдельным пользователям. 18. "C" Новости Один из наиболее популярных пакетов программ для Netnews - Новости C. Это было разработано для абонентов, которые несут новости по связям UUCP. Эта глава обсудит центральные понятия Новостей C, и базисной установки и задач сопровождения. Новости C (C News) сохраняют файлы конфигурации в /usr/lib/news, а большинство binaries в каталоге /usr/lib/news/bin. Статьи сохраняются ниже /var/spool/news. Вы должны удостовериться виртуально что все файлы в этих каталогах принадлежат новостям пользователя, групповым новостям. Большинство проблем является результатом файлов, являющихся недоступным для Новостей C. Сделайте это правилом для Вас, определить новостями пользователя, используя su прежде, чем Вы что - нибудь там измените. Единственые исключения - setnewsids, которые используются, чтобы установить реальный id пользователя некоторых программ новостей. Это должно принадлежать root и должно иметь setuid набор битов. Далее мы описываем все файлы конфигурации C News подробно, и показываем Вам, что Вы должны делать, чтобы сохранить ваш пункт в рабочем состоянии. 18.1 Поставка Новостей Статьи могут быть поданы C News отдельными способами. Когда локальный пользователь отправляет по почте статью, newsreader обычно вручает ее команде inews, которая завершает информацию заголовка. Новости из отдаленного абонента, будь это одиночная статья или целый пакет, даны команде rnews, которая сохраняет их в каталоге /var/spool/newsin.coming, откуда они будут подняты в более позднее время newsrun. С любым из этих двух методов, однако, статья будет в конечном счете вручена команде relaynews. - 313 - Для каждой статьи, команда relaynews проверяет, если статья уже была замечена в локальном пункте, ища id сообщения в файле хронологии. Двойные статьи будут пропущены. Затем, relaynews рассматривает Newsgroups: строку заголовка, чтобы выяснить, запрашивает ли локальный пункт статьи из любой из этих групп. Если он это делает, и группа новостей перечислена в открытом файле, relaynews пробует сохранять статью в соответствующем каталоге в области хранения новостей. Если этот каталог не существует, он будет создан. Id сообщения статьи будет регистрироваться в файле хронологии. Иначе, relaynews пропускает статью. Если relaynews будет не в состоянии сохранять входящую статью, потому что группа, в которой она была зарегистрирована, не перечислена в вашем открытом файле, статья будет перемещаться в группу junk. relaynews также проверит несвежие или статьи без дат и отклонит их. Входящие пакеты, которые терпят неудачу по любой другой причине, перемещаются в /var/spool/news/in.coming/bad, и сообщение об ошибках регистрируется. 18.2 Установка Чтобы установить C News необходимо раз'tar'ить файлы в их соответствующие места, если Вы еше не сделали этго, и отредактировать файлы конфигурации, перечисленные ниже. Они все расположены в /usr/lib/news. Их форматы будут описаны в следующих разделах. Если Вы являетесь передающим пунктом (пунктом листа), Вы нуждаетесь в строке, которая посылает все локально сгенерированные статьи к ожидающему. Пусть ожидающий - moria, тогда ваш системный файл должен выглядеть следующим образом: ME:all/all:: moria/moria.orcnet.org:all/all,!local:f: organization Имя Вашей организации. Например, "Виртуальный Пивоваренный завод". На вашей местной машине, введите " частный пункт '', или что - нибудь, еще, что Вы находите приятным. Большинство людей не будет называть ваш пункт правильно отконфигурированным, если Вы не настроили этот файл. newsgroups ... - 314 - mailname Имя почты Вашего пункта, например vbrew.com. whoami Имя Вашего пункта для целей новостей. Часто используется имя пункта UUCP, например vbrew. explist Вы должны возможно редактировать этот файл, чтобы отразить ваше привилегированное время для некоторых специальных newsgroups. Дисковое пространство может играть важную роль в этом. Чтобы создавать начальную иерархию newsgroups, получите active и newsgroups файл из пункта, который передает Вам, и установите их в /usr/lib/news. Удалите все to.* группы из active файла, и добавте to.mysite и to.feedsite, также как junk и control. To.* группы обычно используются для обмена ihave/sendme сообщениями, но Вы должны создать их независимо от того, планируете ли Вы использовать ihave/sendme или нет. Затем, замените все числа статьи во втором и третьем поле active, используя следующую команду: # cp active active.old # sed 's/ [0-9]* [0-9]* / 0000000000 00001 /' active.old > active # rm active.old Вторая команда - вызов sed (1), одна из моих любимых команд Unix. Этот вызов заменяет две строки цифр на строку нулей и строку 000001, соответственно. В заключение, создайте каталог для хранения новостей и подкаталоги, используемые для входящих и исходящих новостей: # cd /var/spool # mkdir news news/in.coming news/out.going # chown -R news.news news # chmod -R 755 news Если вы используете более поздний выпуск C News, Вы можете быть должны создать каталог out.master в каталоге хранения новостей. Если вы используете newsreaders из другого распределения чем C News, Вы можете находить, что некоторые ожидают хранилище новостей в /usr/spool/news а не в /var/spool/news. Если ваш newsreader кажется, не находит статьи, создайте сноску из /usr/spool/news в /var/spool/news. Теперь, Вы готовы получать новости. Обратите внимание, что Вы не - 315 - должны создавать любые каталоги отличные от показанных выше, потому что каждый раз когда C News получает статью от группы, для которой не имеется никакого каталога, он создаст его. C News нуждается в пользователе, которому можно послать сообщения об ошибках и отчеты состояния. По умолчанию, это - usenet. Если Вы используете значение по умолчанию, Вы должен установить специальные права для него. Вы можете также отменять это поведение, устанавливая переменную среды NEWSMASTER как соответствующее имя. 18.3 Системный файл Системный файл sys расположенный в /usr/lib/news, управляет иерархией получения и передачи к другому абоненту. Хотя имеются инструментальные средства сопровождения, именованные addfeed и delfeed, я думаю, что лучше поддерживать этот файл вручную. Файл sys содержит входы для каждого пункта на который Вы передаете новоси, также как описание групп, которые Вы примете. Вход выглядит подобно site[/exclusions]:grouplist[/distlist][:flags[:cmds]] Входы могут быть продолжены поперек символов перевода строки, используя наклонную черту влево (\). Знак мусора (*) обозначает комментарий. site является именем пункта к которому вход применяется. Каждый обычно выбирает имя UUCP пункта для этого. Должен иметься вход для вашего пункта в файле sys, или Вы не будете получать никакие статьи самостоятельно. Специальное имя пункта ME обозначает ваш пункт. Так как C News проверяет пункт против имен пункта в Path: поле заголовка, Вы должны удостовериться, что они действительно соответствуют. Некоторые абонентв используют их полностью квалифицированное имя области в этом поле, или специальное подобно news.site.domain. Чтобы предотвращать возврат любых статей к этому абоненту Вы должны добавить их к списку исключения, отделяя их запятыми. Для входа, обращающегося к пункту moria, например, поле пункта содержало бы moria/moria.orcnet.org. Grouplist - отделенный запятой список групп и иерархий для этого специфического пункта. Иерархия может быть определена, давая префикс иерархии (типа comp.os для всех групп, чьи имена начинаются с этого - 316 - префикса), необязательно сопровождаемый ключевым словом all (например comp.os.all). Иерархия или группа исключается из пересылки, приписыванием метки восклицания. Если newsgroup проверен против списка, самое длинное соответствие, применяется. Например, если grouplist содержит !comp,comp.os.linux,comp.folklore.computers Никакие группы из comp иерархии за исключением comp.folklore.computers и всех групп ниже comp.os.linux не будут поданы к тому пункту. Если пункт запрашивает послать все новости, что Вы получаете для себя, введите все как grouplist. Distlist - смещение из grouplist наклонной чертой вправо, и содержит список распределений, которые будут посланы. Снова, Вы можете исключать некоторые распределения, предшествуя им с меткой восклицания. Все распределения обозначены all. Опущение distlist подразумевает список всех. Например, Вы можете использовать дистрибутивный список all,!Local, чтобы предотвратить посылку новостей для локального использования отдаленному абоненту. Имеются обычно по крайней мере два распределения: world, который является часто заданным по умолчанию используемым распределением когда ни одно не определено пользователем, и local. Могут иметься другие распределения, которые обращаются к некоторой области, штату, стране, и т.д. В заключение, имеются два распределения, используемые только C News; это - sendme и ihave, и используются для sendme/ihave протокола. Флаги Здесь описывются некоторые параметры для feed. Это может быть пусто, или комбинация следующего: F Этот флаг дает возможность пакетированию. f Это почти идентично F флагу, но позволяет C News вычислять размер исходящих пакетов более точно. I Этот флаг заставит C News произвести список статей, подходящих для использования ihave/sendme. Дополнительные изменения sys и batchparms - 317 - файлов требуются, чтобы дать возможность ihave/sendme. n Это создает командные файлы для active NNTP клиентов передачи подобно nntpxmit (см. главу 19.). Командные файлы содержат имя файла статьи наряду с id сообщения. L Это сообщает, чтобы C News передал только статьи, зарегистрированные в вашем пункте. Этот флаг может сопровождаться десятичным числом n, которое заставит C News передать статьи, зарегистрированные только внутри n переходов из вашего пункта. C News определяет число переходов в поле Path:. u Это сообщает C News принимать только статьи из групп unmoderated. m Это сообщает C News принимать только статьи из уменьшенных групп. Вы можете использовать не больше одного из F, f, I, или n. cmds Это поле содержит команду, которая будет выполнена для каждой статьи, если пакетирование не допускается. Статья будет подана команде на стандартном вводе. Это должно использоваться для очень малых потоков; иначе загрузка на обеих системах будет слишком высока. Заданная по умолчанию команда uux - -r -z system!rnews Вызывает rnews на отдаленную систему, подавая эту статью на стандартном вводе. Заданный по умолчанию путь поиска для команд, данных в этом поле - /bin:/usr/bin:/usr/lib/news/bin/batch. Последний каталог содержит ряд команд оболочки, чьи имя начинается с via; они кратко описаны позже в этой главе. Если пакетирование допускается, использованием или F или f, или I или n флагов, C News ожидает находить имя файла в этом поле, а не команду. Если имя файла не начинается с наклонной черты вправо (/), оно принимается относительно /var/spool/news/out.going. Если поле пусто, то значения по умолчанию system/togo. При установке C News, Вы будете возможно должны написать ваш собственный файл sys. Чтобы помочь Вам с этим, мы даем типовой файл для vbrew.com ниже, с которого Вы могли бы скопировать то, в чем Вы нуждаетесь. - 318 - # We take whatever they give us. ME:all/all:: # We send everything we receive to moria, except for local and # brewery-related articles. We use batching. moria/moria.orcnet.org:all,!to,to.moria/all,!local,!brewery:f: # We mail comp.risks to jack@ponderosa.uucp ponderosa:comp.risks/all::rmail jack@ponderosa.uucp # swim gets a minor feed swim/swim.twobirds.com:comp.os.linux,rec.humor.oracle/all,!local:f: # Log mail map articles for later processing usenet- maps:comp.mail.maps/all:F:/var/spool/uumaps/work/batch 18.4 Файл active Файл active расположенный в /usr/lib/news перечисляет все группы, известные в вашем пункте, и статьи в настоящее время интерактивные. Вы редко будете должны изменять его, но мы объясним это ради законченности. Входы имеют следующую форму: newsgroup high low perm Newsgroup, конечно, имя группы. Low и high - самые низкие и самые высокие числа статей, в настоящее время доступных. Если ни одна не является доступной в настоящее время, low = high + 1. Perm - параметр, детализирующий доступ пользователей в зависимости от группы. Он принимает одно из следующих значений: y Пользователям разрешают отправить по почте к этой группе. n Пользователям не разрешают отправить по почте к этой группе. Однако, группа может все еще читаться. x Эта группа была заблокирована локально. Это случается иногда, когда - 319 - администраторы новостей (или их старшие) закрывают статьи, зарегистрированные в некоторых группах. Статьи, полученные для этой группы не сохранены локально, хотя они посланы к абонентам, которые запрашивают их. m Это обозначает уменьшенную группу. Когда пользователь пробует отправлять по почте к этой группе, интеллектуальный newsreader сообщит какая она, и пошлет статью регулятору взамен. Адрес регулятора принимается из файла регуляторов в /usr/lib/news. =real-group Это отмечает newsgroup как локальную специализацию для другой группы, а именно real-группы. Все статьи, зарегистрированные в newsgroup будут переназначены в нее. В C News, Вы вообще не будете должны обращаться к этому файлу непосредственно. Группы могут быть добавлены или удаляться, локально используя addgroup и delgroup (см. ниже в разделе 18.10). Когда группы добавляются или удаляются для всего Usenet, это обычно делается, посылая newgroup или rmgroup сообщение управления, соответственно. Никогда не посылайте такое сообщение самостоятельно! Для команд о том, как создавать newsgroup, читайте ежемесячник в news.announce.newusers. Файл, близко связанный с active - active.times. Всякий раз, когда группа создана, C News регистрирует сообщение в этот файл, содержащее имя созданной группы, дату создания, было ли это выполнено в соответствии c сообщением управления новой группы или локально, и кто сделал это. Это - для удобства newsreaders, которые могут сообщать пользователю относительно любой недавно созданной группы. Это также используется командой NEWGROUPS NNTP. 18.5 Пакетирование Статьи Newsbatches следуют за специфическим форматом, который является тем же самым для Bnews, C News, и INN. Каждой статье предшествует строка: #! rnews count Где count - число байтов в статье. Когда используется пакетное сжатие, возникающий в результате файл сжат в целом, и содержит другую строку в соответствии c сообщением, которое нужно использовать для распаковки. Стандартное средство сжатия - упаковщик, который отмечен - 320 - #! cunbatch Иногда, при необходимости посылать пакеты через программное обеспечение почты, которое удаляет, восьмой бит из всех данных, сжатый пакет может быть защищен, используя, что называется c7-encoding; эти пакеты будут отмечены c7unbatch. Когда пакет подан к rnews на отдаленном пункте, он проверяет эти маркеры и обрабатывает пакет соответственно. Некоторые абоненты также используют другие инструментальные средства сжатия, подобно gzip, и предшествует таким файлам с zunbatch взамен. C News не распознает ненормативные заголовки подобно этим; Вы должны изменить исходник, чтобы поддерживать их. В C News, пакетирование статьи выполняется /usr/lib/news/bin/batch/sendbatches, который берет список статей из site/togo файла, и помещает их в отдельный newsbatches. Это должно быть выполнено раз в час или даже более часто, в зависимости от объема траффика. Операция управляется batchparms файлом в /usr/lib/news. Этот файл описывает максимальный пакетный размер, позволенный для каждого пункта, программу пакетирования и необязательную программу сжатия, которую нужно использовать, и транспорт для поставки к этому отдаленному пункту. Вы можете определять параметры пакетирования, также как набор заданных по умолчанию параметров для абонента, не явно упомянутого. Чтобы выполнять пакетирование для специфического пункта, Вы вызываете это как # su news -c "/usr/lib/news/bin/batch/sendbatches site" Когда вызывается без аргументов, sendbatches обрабатывает все пакетные очереди. Интерпретация " все " зависит от присутствия заданного по умолчанию входа в batchparms. Если он найден, все каталоги в /var/spool/news/out.going проверяются, иначе, он циклически проходит все входы в batchparms. Обратите внимание, что sendbatches, при просмотре каталога out.going, берет только те каталоги, которые не содержат никакую точку или знак (@) как имена пункта. При установке C News, Вы наиболее вероятно найдете batchparms файл в вашем распределении, который содержит приемлемый заданный по умолчанию вход, так что имеется хорошая возможность не изменять файл. На - 321 - всякий случай, мы описываем формат. Каждая строка состоит из шести полей, отделяемых пробелами или метками табуляции: site size max batcher muncher transport Значение этих полей следующие: site - имя пункта, к которому применяется вход. Togo файл для этого пункта должен постоянно находиться в out.going/togo. Имя пункта /default/ обозначает заданный по умолчанию вход. size - максимальный размер созданных пакетов статей (перед сжатием). Для одиночных статей больших чем этот размер, C News делает исключение и помещает их в одиночный пакет. max - максимальное число пакетов, созданных и планируемых для передачи перед пакетированием для этого специфического пункта. C News определяет число поставленных в очередь пакетов, используя queulen команду в /usr/lib/news/bin. Выпуск newspak Vince Skahan'а должен содержать команду для bnu-совместимого UUCP. Если Вы используете различные виды spool каталогов, например, Taylor UUCP, Вам может быть необходимо написать ваш собственный. Поле batcher содержит команду, используемую для создания пакета из списка статей в togo файле. Это - обычно batcher. Для других целей можно обеспечивать альтернативные команды. Например, ihave/sendme протокол требует, чтобы список статей был превращен в сообщения управления ihave или sendme, которые зарегистрированы в newsgroup to.site. Это выполняется batchih и batchsm. muncher поле определяет команду, используемую для сжатия. Обычно, это - compcun, команда, которая производит сжатый пакет. В качестве альтернативы, Вы могли бы обеспечивать muncher, который использует gzip, скажем gzipcun (чтобы быть чистым: Вы должны запись это непосредственно). Вы должны удостовериться, что распаковщик на отдаленном пункте исправлен, чтобы распознать файлы, сжатые с gzip. Если отдаленный пункт не имеет команды распаковки, Вы можете определить nocomp, который не делает никакое сжатие. Последнее поле, transport, описывает транспорт, который нужно использовать. Доступно несколько стандартных команд для различных transports, чьи имена начинаются с via. Sendbatches передает им имя пункта адресата в командной строке. Если batchparms вход не был /default/, он получает имя пункта из поля site, удаляя все последующее, включая первую точку или - 322 - наклонную черту вправо. Если вход был /default/, используются имена каталога в out.going. Имеются две команды, которые используют uux, чтобы выполнить rnews на отдаленной системе; viauux и viauuxz. Последняя устанавливает -z флаг для (более старые версии) uux, чтобы отменить сообщения успеха для каждой переданной статьи. Другая команда, viamail, посылает пакеты статей пользователю rnews на отдаленной системе через почту. Все команды из последних трех полей нужно расположть или в out.going/site или в /usr/lib/news/bin/batch. Большинство их - команды, так, чтобы Вы могли легко приспосабливать новые инструментальные средства для ваших персональных потребностей. Они вызываются как трубопровод. Список статей подается дозатору на стандартном вводе, который производит пакет на стандартном выводе. Это канально передается в muncher, и так далее. Типовой файл дан ниже. # batchparms file for the brewery # site | size |max |batcher |muncher |transport #-------------+--------+-------+---------+-----------+----------- /default/ 100000 22 batcher compcun viauux swim 10000 10 batcher nocomp viauux 18.6 Устаревшие Новости В Bnews, устаревание выполняться программой называемой expire, которая принимает список newsgroups как аргументы, наряду с спецификацией времени после которого статьи должны устареть. Иногда, Вы можете хотеть сохранять статьи из некоторых групп даже после того, как они устарели; например, Вы могли бы хотеть сохранить программы, зарегистрированные в comp.sources.unix. Это называется архивирование. Explist разрешает Вам отмечать группы для архивирования. Вход в explist похож на это: grouplist perm times archive Grouplist - отделенный запятой список newsgroups, к которым вход применяется. Иерархии могут быть определены префиксом имени группы, необязательно конкатенированным ко всем. Например, для входа, обращающегося к всем группам ниже comp.os, Вы могли бы вводить comp.os - 323 - или comp.os.all в grouplist. При устаревании новости из группы, имя будет проверено против всех входов в explist в данном порядке. Первый соответствующий вход применяется. Например, чтобы отбросить большую часть comp после четырех дней, кроме comp.os.linux.announce, который Вы хотите хранить в течение недели, Вы просто должны иметь вход для последнего, который определяет семи-дневный период окончания, сопровождаемый входом для comp, который определяет четыре дня. Поле perm детализирует, если вход применяется к уменьшенной, или любой группе. Оно может принимать значения m, u, или x, которые обозначают уменьшенный, неуменьшенный, или любой тип. Третье поле, times, обычно содержит только одиночное число. Это - число дней после которых статьи будут устаревать, если они не были назначены, искусственная дата окончания в поле Expires в заголовке статьи. Обратите внимание, что это - число дней подсчитывается с поступления в ваш пункт, а не с даты регистрации. Поле times может, однако, быть более сложно. Это может быть комбинация до трех чисел, отделяемых от друг друга черточкой. Первое обозначает число дней, которые должны пройти прежде, чем статья рассматривается кандидатом на окончание. Редко полезно использовать значение отличное от нуля. Второе поле - вышеупомянутое заданное по умолчанию число дней после, которых оно будет устаревать. Третья часть - число дней после которых статья будет устаревать безоговорочно, независимо от того, имеет ли она поле Expires или нет. Если только среднее число дано, другие два берут значения по умолчанию. Они могут быть определены, используя специальный /bounds/ входа, который описан ниже. Четвертое поле, archive, обозначает, должен ли newsgroup быть заархивирован, и где. Если никакого архивирования не предназначено, должна использоваться черточка. Иначе, Вы либо используете полное имя пути (указывающее на каталог), или знак (@). Знак обозначает заданный по умолчанию каталог архивов, который должен то быть дан doexpire, используя -a флаг в командной строке. Каталог архивов должен принадлежать news. Когда doexpire архивирует статью из, скажем comp.sources.unix, он сохраняет ее в каталоге comp/sources/unix ниже каталога архивов, создавая его если он не существует. Каталог архивов непосредственно, однако, не будет создан. Имеются два специальных входа в вашем explist файле, на который doexpire полагается. Вместо списка newsgroups, они имеют ключевые слова /bounds/ и /expired/. Вход /bounds/ содержит значения по умолчанию для трех значений - 324 - поля времен, описанного выше. Поле /expired/ определяет, как долго C News будет содержать строки в файле хронологии. Это необходимо, потому что C News не будет удалять строку из файла хронологии, если соответствующая статья устарела, но будет содержать ее в случае, если дубликат должен прибыть после этой даты. Простой explist файл с довольно плотными интервалами истечения воспроизведен ниже: # keep history lines for two weeks. Nobody gets more than three months /expired/ x 14 - /bounds/ x 0-1-90 - # groups we want to keep longer than the rest comp.os.linux.announce m 10 - comp.os.linux x 5 - alt.folklore.computers u 10 - rec.humor.oracle m 10 - soc.feminism m 10 - # Archive *.sources groups comp.sources,alt.sources x 5 @ # defaults for tech groups comp,sci x 7 - # enough for a long weekend misc,talk x 4 - # throw away junk quickly junk x 1 - # control messages are of scant interest, too control x 1 - # catch-all entry for the rest of it all x 2 - С устареванием в C News, имеется ряд потенциальных проблем при чистке. Например, ваш newsreader мог бы полагаться на третье поле файла active, который содержит число самой низкой интерактивной статьи. При истечении статьи, C News не модифицирует это поле. Если Вы хотите чтобы это поле, представляло реальную ситуацию, Вы должны выполнить программу, называемую updatemiin после каждого выполнения doexpire. 18.7 Разнообразные Файлы - 325 - Имеется ряд файлов, которые управляют поведением C News, но не существенны для функционирования. Все они постоянно находятся в /usr/lib/news. Мы опишем их кратко. newsgroups Это - файл дополняющий active, который содержит список имен newsgroup, наряду с кратким описанием основного предмета. Этот файл автоматически модифицируется, когда C News получает сообщение управления checknews (см. раздел 18.8). localgroups если Вы имеете ряд локальных групп, таких что Вы не хотите, чтобы C News жаловался относительно них, каждый раз когда Вы получаете checknews сообщение, поместите их имена и описания в этом файле, точно так же как они появились бы в newsgroups. mailpaths Этот файл содержит адрес регулятора для каждой уменьшенной группы. Каждая строка содержит имя группы, сопровождаемое адресом email регулятора (отделеные меткой табуляции). Два специальных входа обеспечиваются как значение по умолчанию. Они базовые и межсетевые. Оба обеспечиваются --- в записи bang-path --- путем к самому близкому базовому пункту, и пункту, который понимает RFC 822 адреса (user@host). Вы не будете должны изменять межсетевой вход, если Вы имеете smail или sendmail, потому что они понимают RFC 822 - адресацию. Базовый вход используется всякий раз, когда пользователь отправляет по почте к уменьшенной группе, чей регулятор не перечислен явно. Если имя newsgroup -- alt.sewer, и базовый вход содержит path!%s, C News отправит по почте статью к path!alt-sewer, надеясь, что базовая машина способна передать статью. Чтобы выяснить который путь использовать, спросите администрацию новостей в пункте, который передает Вам. Вы можете также использовать uunet.uu.net!%s. distributions Этот файл не файл C News, но он используются некоторыми newsreaders, и nntpd. Он содержит список распределений, распознанных вашим пунктом, и описанием (встроенных) возможностей. Например, Виртуальный Пивоваренный завод имеет следующий файл: world everywhere in the world - 326 - local Only local to this site nl Netherlands only mugnet MUGNET only fr France only de Germany only brewery Virtual Brewery only log Этот файл, содержит файл регистрации всех действий C News. Он вызывается регулярно, выполняя newsdaily;