, которые показывают всех абонентов для - 261 - каждой страны. 14.6 Конфигурирование elm Elm замещает " электронную почту " и является одним из наиболее приемлемых инструментальных средств Unix. Она обеспечивает полноэкранный интерфейс с возможностью справки. Мы не будем обсуждать, здесь как использовать elm, и остановимся только на опциях конфигурации. Теоретически, Вы можете выполнять неконфигурированный elm, и все работает хорошо ---, если Вы очень удачливы. Но имеются несколько опций, которые должны быть установлены. При запуске elm читает набор переменных конфигурации из elm.rc файла в /usr/lib/elm. Затем, она будет пытаться читать файл .elm/elmrc в вашем исходном каталоге. Вы обычно не пишите этот файл самостоятельно. Он создается когда Вы выбираете "сохранить опции" в меню опций elm. Набор опций для частного elmrc файла также доступен в глобальном elm .rc файла. Большинство установок в вашем частном elmrc файле отменяет таковые глобального файла. 14.6.1 Глобальные Опции elm В глобальном elm .rc файле, Вы должны установить опции, которые относятся к имени вашего host. Например, в Виртуальном Пивоваренном заводе, файл содержал бы следующее: # # The local hostname hostname = vlager # # Domain name hostdomain = .vbrew.com # # Fully qualified domain name hostfullname = vlager.vbrew.com Этот набор опций ориентирует elm относительно локального hostname. Хотя эта информация редко используется, Вы должны - 262 - установить эти опции. Обратите внимание, что эти опции воздействуют только в глобальном файле конфигурации; когда они найдены в вашем частном elmrc, они будут игнорироваться. 14.6.2 Национальный Набор Символов Недавно имелись предложения исправить RFC 822 стандарт, чтобы поддерживать различные типы сообщений, типа простых текстовых, двоичных данных, файлов Postscript, и т.д. Набор стандартов и RFC, покрывающий эти аспекты, обычно упоминается как MIME, или Многоцелевые Расширения Почты Internet. Между прочим, это также позволяет получателю узнать, использовался ли набор символов отличный от стандартного ASCII, при написании сообщения. Это обеспечивается elm до некоторой степени. Набор символов, используемый Linux внутренне, чтобы представить символы обычно упоминается как ISO-8859-1, что является именем стандарта, которому он соответствует. Это также известно как Латинский -1. Любые символы в сообщении из этого набора символов должны иметь следующую строку в заголовке: Content-Type: text/plain; charset=iso-8859-1 Система получения должна распознать это поле и принять соответствующие меры при отображении сообщения. Значение по умолчанию для текстовых сообщений - значение charset us-ascii. Чтобы отображать сообщения с набором символов отличным от ASCII, elm должен знать, как печатать эти символы. По умолчанию, когда elm получает сообщение с charset полем отличным от us-ascii, она пробует отображать сообщение, используя команду, называемую metamail. Сообщения, которые требуют, чтобы мета почта отобразилась, показываются с " M " в самом первом столбце в экране краткого обзора. Так как Linux набор символов - ISO-8859-1, вызов metamail не необходим для отображения сообщения, использующего этот набор символов. Если еlm знает, что дисплей понимает ISO-8859-1, она не будет использовать metamail, а отобразит сообщение непосредственно. Это может быть выполнено, установкой следующей опции в - 263 - глобальном elm .rc: displaycharset = iso-8859-1 Обратите внимание, что Вы должны установить эти опции даже, когда Вы никогда не собираетесь посылать или получать сообщения, которые фактически содержат символы отличные от ASCII. Это - потому что люди, которые посылают такие сообщения обычно конфигурируют их mailer'ом, чтобы поместить соответствующий тип содержания: поле в заголовке почты по умолчанию, посылают или нет они только ascii сообщения. Однако, установки этой опции в elm .rc не достаточно. Проблема состоит в том, что при отображении сообщения, elm вызывает библиотечную функцию для каждого символа, чтобы определить является ли он печатаемым или нет. По умолчанию, эта функция распознает только символы ASCII, и отображает все другие символы как "^?". Вы можете преодолеть это, устанавливая переменную среды LC CTYPE как ISO-8859-1, которая сообщает, что библиотека приняла символы Latin-1 как печатаемые. Поддержка для этих и других возможностей доступна начиная с libc-4.5.8. При посылке сообщений, которые содержат специальные символы из ISO-8859-1, Вы должны удостовериться, что установлены еще две переменные в elm .rc файле: charset = iso-8859-1 textencoding = 8bit Это заставит elm сообщить набор символов как ISO-8859-1 в заголовке почты, и посылать это как 8 битовые значения (значение по умолчанию - все символы 7 бит). Конечно, любая из этих опций может также быть установлена в частном elmrc файле вместо глобального. 15. Получение smail и Выполнение Эта глава даст Вам быстрое введение в установку smail, и краткий обзор функциональных возможностей, которые он обеспечивает. Хотя - 264 - smail в значительной степени совместим с sendmail в поведении, их файлы конфигурации полностью отличны. Основной файл конфигурации - /usr/lib/smail/config. Вы всегда должны редактировать этот файл, чтобы отразить значения, специфические для вашего пункта. Другие файлы, которые конфигурируют маршрутизацию и транспортные опции, могут также использоваться. По умолчанию, smail передает всю входящую почту немедленно. Если Вы имеете относительно высокий траффик, Вы может взамен заставить smail, собирать все сообщения в так называемой очереди, и обрабатывать их равномерно. При обработке почты внутри TCP/IP сети, smail - часто выполняются в daemon режиме: в загрузочное время системы, он вызывается из rc.inet2, и помещает себя в фон, где ждет входящие TCP соединения на SMTP порте (обычно порт 25). Это очень полезно всякий раз, когда Вы ожидаете значительный траффик, потому что smail не запущен отдельно для каждого входящего соединения. Smail имеет множество флагов, которые управляют этим поведением. Удачно что, smail поддерживает ряд стандартных режимов - операции, которые допускаются, когда Вы вызываете его специальным именем команды, подобно rmail, или smtpd. Мы столкнемся с большинством их при обсуждении различных возможностей smail. Имеются две связи с smail, который Вы должны иметь при всех обстоятельствах; а именно /usr/bin/rmail и /usr/sbin/sendmail. Когда Вы составляете и посылаете сообщение почты средством пользователя подобно elm, сообщение будет переправлено в rmail для получения. Тот же самое случается с почтой, приходящей в через UUCP. Некоторые версии elm, однако, вызывают /usr/sbin/sendmail вместо rmail, так что Вы нуждаетесь в обоих. Например, если Вы храните smail в /usr/local/bin, напечатайте в оболочке: # ln -s /usr/local/bin/smail /usr/bin/rmail # ln -s /usr/local/bin/smail /usr/sbin/sendmail Если, который Вы хотите углубиться далее в подробности - 265 - конфигурирования smail, пожалуйста, обращаетесь к руководству smail. Если он не включен в вашу любимую поставку Linux, Вы может получить его вплоть до исходников. 15.1 UUCP Установки Чтобы использовать smail в uucp среде, базисная установка довольно проста. Сначала, Вы должны удостовериться, что Вы имеете две символических связи к rmail и sendmail, упомянутому выше. Если Вы ожидаете получать SMTP пакеты от другого абонента, Вы также должны сделать rsmtp связь к smail. В smail распределении Vince Skahan, Вы найдете типовой файл конфигурации. Он называется config.sample и постоянно находится в /usr/lib/smail. Вы должны копировать его в конфигурации и редактировать его, чтобы отразить значения, специфические для вашего пункта. Примите, что ваш пункт именован swim .tobirds.com, и зарегистрирован в картах UUCP как swim. Ваш smarthost - ulysses. Тогда ваш файл конфигурации должен выглядеть следующим образом: # # Our domain names visible domain=two.birds:uucp # # Our name on outgoing mails visible name=swim.twobirds.com # # Use this as uucp-name as well uucp name=swim.twobirds.com # # Our smarthost smart host=ulysses Первое утверждение сообщает smail относительно областей, которым ваш пункт принадлежит. Вставьте их имена здесь, отделяемые двоеточиями. Если ваше имя пункта зарегистрировано в картах UUCP, Вы должен также добавить uucp. При отправке(получении) сообщения почты, smail определяет имя вашего host, используя hostname системный вызов (2), и проверяет адрес - 266 - получателя для этого hostname. Если адрес соответствует одному из имен, или неквалифицированному hostname, получатель, рассматривается локальным, и smail пытается передавать сообщение пользователю. Видимое имя должно содержать одиночное, полностью квалифицированное имя области вашего пункта, которое Вы хотите использовать при выходе почты. Это имя используется при производстве адреса отправителя для всей почты. Вы должны удостовериться, чтобы использовать имя, которое smail распознает относительно локального host (то есть hostname с одной из областей, перечисленных в атрибуте области). Последнее утверждение устанавливает путь, используемый для маршрутизации smart-host (описанный в разделе 14.4). С этой типовой установкой, smail будет передавать любую почту для отдаленных адресов интеллектуальному host. Путь, заданный в интеллектуальном атрибуте пути будет использоваться как маршрут до интеллектуального host. Так как сообщения будут передан через UUCP, атрибут должен определить систему, известную вашему UUCP программному обеспечению. Пожалуйста обратитесь к главе 13. При создании пункта, известного UUCP. Имеется одна опция, используемая в вышеупомянутом файле, который мы не объяснили; это - имя uucp. Причина использовать опцию: По умолчанию, smail использует значение, возвращенное hostname (2) для uucp-специфических вещей типа возвращающегося пути, данного в строке From заголовка. Если ваш hostname не зарегистрирован в UUCP проекте, Вы должен сообщить, чтобы smail использовал взамен ваше полностью квалифицированное имя области. Это может быть выполнено, добавлением опции имени uucp к файлу конфигурации. Имеется другой файл в /usr/lib/smail, называемый paths.sample. Это - пример файла путей. Однако, Вы не будете нуждаться в нем, если Вы не имеете связей почты больше чем к одному пункту. Если нет, Вы будете должны написать один непосредственно, или генерировать один из карт Usenet. Файл путей будет описан позже в этой главе. - 267 - 15.2 Установки для локальной сети Если Вы имеете пункт с двумя или больше главными ЭВМ, соединенными локальной сетью (LAN), Вы будете должны обозначить один host, который обрабатывает ваше UUCP соединение со внешним миром. Представте, что мы снова на Виртуальном Пивоваренном заводе, и vstout установлен как UUCP ворота. В среде с сетевой структурой, самое лучшее хранить пользовательские mailbox на одиночной файловой системе, которая nfs- связана со всеми главными ЭВМ. Это позволяет пользователям двигаться от машины до машины, без необходимости перемещать их почту (или даже хуже, проверять приблизительно три или четыре машины для недавно прибытой почты каждое утро). Следовательно, Вы также хотите делать адреса отправителя независимыми от машины. Общая практика - использовать область, как адрес отправителя, вместо hostname. Janet, например, определил бы janet@vbrew.com вместо janet@vale.vbrew.com. Мы объясним ниже, как заставить сервер распознать имя области как допустимое имя для вашего пункта. Другой способ хранения всех mailbox на центральном host состоит в том, чтобы использовать POP или IMAP. POP замещает Протокол Почтового отделения и допускает пользователей, обращаться к их mailbox по TCP/IP. IMAP, интерактивный Протокол Доступа Почты подобен POP, но более общий. И клиентура и серверы для IMAP и POP была пренесена на Linux, и доступна из sunsite.unc.edu ниже /pub/Linux/system/Network. 15.2.1 Написание Файлов Конфигурации Конфигурация для Пивоваренного завода работает следующим образом: все главные ЭВМ за исключением сервера почты vstout непосредственно направляют всю почту к серверу, используя маршрутизацию smart host. Vstout непосредственно посылает всю почту реальному smart host, который направляет всю почту Пивоваренного завода; этот host называется moria. Стандартный файл конфигурации для всех главных ЭВМ отличных от vstout походит на это: # - 268 - # Our domain: visible domain=vbrew.com # # What we name ourselves visible name=vbrew.com # # Smart-host routing: via SMTP to vstout smart path=vstout smart transport=smtp Это очень похоже на то, что мы использовали для uucp пункта. Основное различие - то, что транспорт, используемый, чтобы послать почту smart host, конечно, SMTP. Атрибут области заставит smail использовать имя области вместо локального hostname на всей почте. На UUCP воротах vstout, файл конфигурации немного отличный: # # Our hostnames: hostnames=vbrew.com:vstout.vbrew.com:vstout # # What we name ourselves visible name=vbrew.com # # in the uucp world, we're known as vbrew.com uucp name=vbrew.com # # Smart transport: via uucp to moria smart path=moria smart transport=uux # # we're authoritative for our domain auth domains=vbrew.com Этот файл конфигурации использует отличную схему, чтобы сообщить smail, чем локальный host вызывается. Вместо того, чтобы давать список областей и позволять находить hostname системным вызовом, он определяет список явно. Вышеупомянутый список содержит, и полностью квалифицированные и неквалифицированные hostname, и область. Это заставит smail распознать janet@vbrew.com как локальный адрес, и передавать сообщение janet. - 269 - Auth переменная областей называет области, для которых vstout является авторитарным. То есть если smail получает любую почту, адресованную host .vbre.com, где host не называет существующую локальную машину, он отклоняет сообщение и возвращает это отправителю. Если этот вход не представлен, любое такое сообщение будет послано smart-host, который возвратит его к vstout, и так далее, пока оно не будет отброшено из-за превышения максимального счета посылки на небольшое расстояние. 15.2.2 Выполнение smail Сначала, Вы должны решить, выполниться ли, smail как отдельный daemon, или управляет SMTP портом и smail вызывается только всякий раз, когда SMTP соединение запрошено от некоторого клиента. Обычно, Вы предпочтете операцию daemon на сервере почты, потому что это загружает машину гораздо меньше чем порождение smail много раз для каждого одиночного соединения. Поскольку сервер почты передает большинство входящей почты непосредственно пользователям, Вы выберете операцию inetd на большинстве других главных ЭВМ. Для любого режима работы, который Вы выбираете для каждого индивидуального host, Вы должны удостовериться, что Вы имеете следующий вход в вашем файле /etc/services: smtp 25/tcp # Simple Mail Transfer Protocol Это определяет TCP число порта, которое smail должен использовать для SMTP диалогов. 25 - стандарт, определенный Назначенными Числами RFC. В daemon режиме, smail поместится в фон, и будет ждать соединения на SMTP порте. Когда соединение происходит, он ветвится и проводит SMTP диалог с равным процессом. Smail daemon обычно запускается, как команда rc.inet2, используя следующую команду: /usr/local/bin/smail -bd -q15m -bd флаг включает daemon режим, а -q15m делает обработку сообщений в очереди каждые 15 минут. - 270 - Если Вы хотите использовать inetd взамен, ваш файл /etc/inetd.conf, должен содержать строку: smtp stream tcp nowait root /usr/sbin/smtpd smtpd Smtpd должен быть символическая связь к smail двоичному. Не забудьте, что Вы должны заставить inetd повторно-читать inetd.conf, посылая ему сигнал HUP после создания этих изменений. Daemon режим и inetd режим взаимно исключающиеся. Если Вы выполняете smail в deamon режиме, Вы должны удостовериться, и прокомментировать любую строку в inetd.conf для smtp обслуживания. При наличии inetd управления smail, удостоверитесь, что rc.inet2 не запускает smail daemon. 15.3 Если Не Проходит ... Если кое-что идет неправильно с вашей установкой, имеется ряд возможностей, которые могут помочь Вам найти корень проблемы. Первое место, которое нужно проверить - регистрационные файлы smail. Они сохраняются в /var/spool/smail/log, и именованы logfile и paniclog, соответственно. Типичный вход в logfile походит на это: 04/24/94 07:12:04: [m0puwU8-00023UB] received | from: root | program: sendmail | size: 1468 bytes 04/24/94 07:12:04: [m0puwU8-00023UB] delivered | via: vstout.vbrew.com | to: root@vstout.vbrew.com | orig-to: root@vstout.vbrew.com | router: smart host | transport: smtp Это показывает, что сообщение от root до root@vstout.vbrew.com было правильно передано host vstout над SMTP. Сообщения smail не могут быть переданы, генерацией входа в регистрационном файле, но сообщение об ошибке передается: - 271 - 04/24/94 07:12:04: [m0puwU8-00023UB] received | from: root | program: sendmail | size: 1468 bytes 04/24/94 07:12:04: [m0puwU8-00023UB] root@vstout.vbrew.com ... deferred (ERR 148) transport smtp: connect: Connection refused Вышеупомянутая ошибка типична для ситуации, в которой smail правильно распознает, что сообщение должно быть передан к vstout, но не был способен соединиться с SMTP обслуживанием по vstout. Если это случается, Вы или имеете проблему конфигурации, или поддержка TCP отсутствует в вашем smail binaries. Эта проблема не так уж необыкновена, как можно было думать. Имелся бы исходник smail binaries, даже в некоторых распределениях Linux, без поддержки для работы с сетями TCP/IP. Если дело обстоит так, Вы должны компилировать smail самостоятельно. Устанавливая smail, Вы можете проверять, имеет ли он TCP поддержку работы с сетями telnet к SMTP порту на вашей машине. Успешное соединие с SMTP сервером, показывается ниже: $ telnet localhost smtp Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 monad.swb.de Smail3.1.28.1 #6 ready at Sun, 23 Jan 94 19:26 MET QUIT 221 monad.swb.de closing connection Если этот тест не производит SMTP заголовок (строка, начинающаяся с 220 кода), сначала удостовертесь, что ваша конфигурация действительно правильна прежде, чем компилировать smail самостоятельно, как описано ниже. Если Вы сталкиваетесь с проблемой с smail, и Вы неспособны разместить сообщения об ошибках smail, Вы можете включить сообщения отладки. Вы можете сделать это используя -d флаг, необязательно сопровождаемый числом, определяющим уровень точности. Smail будет печатать отчет на экран, который может давать - 272 - Вам большое количество подсказок относительно того что, идет неправильно. 15.3.1 Компиляция smail Если Вы знаете наверняка, что smail испытывает недостаток TCP поддержки сети, Вы должны получить исходник. Он возможно включен в ваше распределение, если Вы получили его через CD-ROM, иначе Вы можете получать его из сети через FTP. При компилировании smail, лучше всего работать с набором файлов конфигурации из newspak распределения Vince Skahan's. Чтобы компилировать в TCP драйвере работы с сетями, Вы должны установить макркоманду КОНФИГУРАЦИИ ДРАЙВЕРА в conf/EDITME файле к или bsd-сети или arpa-сети. Вышеупомянутые подходят для инсталляции LAN, но Internet требует arpa-сети. Различие между этими двумя - в том, что последний имеет специальный драйвер для 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 (то есть те, которые не имеют имени области) заданные в адресе отправителя или получателя, например при переходе между двумя сетями, где каждая требует полностью кв