5. Фирменные ОС. СПЕЦИФИЧЕСКИЕ ПРОБЛЕМЫ SENDMAIL.


5.1 - Sun Microsystems SunOS/Solaris 1.x/2.x


Q5.1.1 - Как я могу  решить ошибки типа "line 273: replacement $3 out of bounds"?

Дата: март 23, 1996

Когда я использую sendmail V8 с файлом  конфигурации Sun, я получаю строки типа: /etc/sendmail.cf: line 273: replacement $3 out of bounds Рассматриваемая линия читается так: R$*<@$%y>$* $1<@$2.LOCAL>$3 user@ether Что это значит? Как я могу исправить это?

V8 не признает Sun'овский "$%y" синтаксис, таким образом, как рассматривается в этом контексте, имеется только $1 и $2 (но не $3) в этой строке. Читайте Rick McCarty's документ "Converting Standard Sun Config Files to Sendmail Version 8", в contrib директории (файл "converting.sun.configs") самой последней версии дистрибутива sendmail  для полного решения того, как сделать это.


Q5.1.2 - Как я могу решить ошибки типа "line 445: bad ruleset 96 (50 max)"?

Дата: март 23, 1996

Когда я использую sendmail V8 на Sun, я иногда получаю строки типа: /etc/sendmail.cf: line 445: bad ruleset 96 (50 max) Что это значит? Как я могу исправить это?

Вы так или иначе пробуете запускать старый Sun sendmail (или sendmail.mx) с версией 8  файла конфигурации sendmail, который Sun sendmail не любит. Проверьте ваш /etc/rc.local, любые процедуры, которые были созданы, чтобы останавливать и перезапускать процессы sendmail, и т.д .... Удостовертесь, что вы переключили их все на использование нового sendmail. Чтобы сохранить эту проблему от каких-либо проявлений в дальнейшем, пробуйте следующее (удостоверитесь, что вы входите в систему как root):

 

mv /usr/lib/sendmail /usr/lib/sendmail.old 

ln -s /usr/local/lib/sendmail.v8 /usr/lib/sendmail 

mv /usr/lib/sendmail.mx /usr/lib/sendmail.mx.old 

ln -s /usr/local/lib/sendmail.v8 /usr/lib/sendmail.mx 

chmod 0000 /usr/lib/sendmail.old 

chmod 0000 /usr/lib/sendmail.mx.old

Предполагается, конечно, что Вы установили sendmail V8 в /usr/local/lib/sendmail.v8.


Q5.1.3 - Почему версия 8 sendmail (< 8.7.5) иногда зависает под Solaris 2.5?

Дата: 23 мая, 1996

При переходе от Solaris 2.4 к Solaris 2.5 ядро изменило свое название и находится теперь в /kernel/genunix вместо /kernel/unix, так что _PATH_UNIX в conf.h указывает на неправильное местоположение.

Если Вы не можете обновить до самого последнего выпуска sendmail 8.8.z, лучшее, что можно сделать - изменить _PATH_UNIX в conf.h (в solaris2 части) чтобы указать на настраиваемый интерфейс /dev/ksyms, примерно так: # define _PATH_UNIX "/dev/ksyms"


Q5.1.4 - Почему я не могу использовать SunOS/Solaris для посылки почты на некоторые крупные узлы ?

Дата: 24 ноября, 1996

Наиболее вероятная проблема - в ваших библиотеках резольвера (DNS, /etc/hosts, NIS, etc...). Старые библиотеки резольвера  Sun (и Solaris?)  распределили достаточный участок памяти  только для пяти  IP-адресов для каждого имени хоста, и если какая-либо программа когда-либо попадает на имя с более чем пятью IP-адресами, программа вызывает аварийную ситуацию.

Например, это предохранило бы Вас от посылки почты к CompuServe, с тех пор как (во время написания этой записи) они перечислили одиннадцать IP-адресов для mx1.compuserve.com (одно из имен сервера MX для compuserve.com).

Это коснется Вас, даже если Вы используете версию 8 sendmail, так как это - проблема в библиотеках резольвера, а не в sendmail непосредственно.

Вы должны или получить патчи к библиотекам резольвера от Sun, или самую последнюю версию BIND (см. Q2.12) и установить их библиотеки резольвера надлежащим образом. Из этих двух вариантов, установка BIND - немного большая  работа, но это, как правило, даст Вам намного более современный код, который поможет Вам сопротивляться атакам на ваши системы, более способные программы для использования при обслуживании DNS (включая поддержку  IPV6 и некоторых других особенностей) и некоторые очень полезные утилиты.


Q5.1.5 - Почему я имею проблемы компиляции на Solaris ?

Дата: 20 октября, 1997

Много людей испытали проблемы компиляции на Solaris, с компилятором, обычно жалующимся относительно tm_zone или TopFrame. Solaris section нашей страницы Compiling Sendmail объясняет это.


Q5.1.6 - Как сравнить 8. X с 8. X+Sun ?

Дата: 29 августа, 1998

С  Vn/Berkeley файлом конфигурации они идентичны. Имеется несколько незначительных различий между 8. X с Vn/Berkeley файлом конфигурации и 8. X+Sun с тем же самым файлом конфигурации, но строкой V, замененной на Vn/Sun. Но большинство различий - обратные трюки совместимости, необходимые для 8. X+Sun, чтобы поддержать старый V1/Sun файл конфигурации.

Имеются три веб-страницы, которые обсуждают это подробно: Berkeley migration (от SMI-8.6 до 8. X), Sun migration (от SMI-8.6 до 8. X+Sun), и Differences (5 разделов, сравнивающие и противопоставляющие файлы конфигурации и бинарный код).


5.2 - IBM AIX


Q5.2.1 - системный контроллер ресурсов всегда сообщает о sendmail как "недействующий". Что является неправильным ?

Дата: 5 июля, 1996

Когда я использую версию 8 sendmail на IBM RS/6000 выполняющем AIX, системный контроллер ресурса всегда сообщает о sendmail как "недействующий", даже в том случае, когда он фактически выполняется. Что является неправильным?

При выполнении как daemon sendmail отделяется от своего родительского процесса, вводя SRC в заблуждение, что sendmail вышел. Чтобы исправить это, используйте команды:

 

kill `head -1 /etc/sendmail.pid` 

chssys -s sendmail -f 9 -n 15 -S -a "-d99.100" 

# use "-d0.1" in sendmail 8.6.x 

startsrc -s sendmail -a "-bd -q30m" 

# your sendmail args may vary

Теперь SRC должен сообщать о правильном состоянии sendmail. Если Вы используете версию 8.6.x, используете "-d0.1" вместо "-d99.100" (параметры отладки, несколько измененные в версии 8.7). В 8.6.x побочный эффект опции "-d0.1"  - те несколько строк вывода отладки будут напечатаны на системной консоли каждый раз при запуске sendmail.

Для получения дополнительной информации читайте вывод System Resource Controller, команды lssrc  и chssys  в онлайн AIX документации.


Q5.2.2 - Почему я не могу использовать AIX для посылки почты на некоторые узлы?

Дата: 8 апреля, 1997

Когда я использую sendmail IBM на IBM RS/6000, выполняющем AIX, и пробую послать почту на некоторые узлы, оказывается, что я могу послать на некоторые из них и не могу на другие. Что является неправильным?

Имеются две возможные проблемы:

1) Ваша версия sendmail не сконфигурирована так, чтобы распознавать MX записи в DNS. Просмотрите ваш sendmail.cf в поиске " OK MX " или " OK ALL ". Старые конфигурации закомментировали эту строку, и это заставит попытки послать почту от Вас к некоторым узлам терпеть неудачу (потому что те узлы имеют MX-записи, но никаких A записей в их DNS для определенного FQDN домена, к которому вы пытаетесь отправлять).

Для получения дополнительной информации, см. comp.unix.aix FAQ ftp://rtfm.mit.edu/pub/usenet/news.answers/aix-faq/.

2) Имеется негатив, баг кэширования в AIX 3.2.5 с /usr/sbin/named выполняемыми программами, которые являются длиной менее чем  103000 байтов. Просите, чтобы ваш IBM представитель дал Вам PMP 3251 или самую современный патч, который исправляет эту проблему для вашей специфической конфигурации и версии OS.


Q5.2.3 - Почему я не могу заставить sendmail 8.7.1 использовать  MX записи с AIX 3.2.5?

Дата: 5 июля, 1996

IBM, в их бесконечной мудрости, предусматривает заголовок файла, который  легко неправильно компилируется. Как следствие, структуре {} для запросов DNS  неправильно распределена, и обработка MX  будет выражать недовольство.

Исправление 1) обновите к 8.7.5 - это даст исправляющий кода для этой проблемы.

Исправление 2) Устанавите BIND4.9.4 библиотеки и файлы для включения и достигают Формирования файла. AIX, чтобы использовать их - я *think* они Получают Это Право (если не, по крайней мере это умрет в течение, компилируют скорее чем неудача сверхъестественно во время выполнения).

Исправление 3) Крэкните Makefile.AIX, чтобы передать -DBIT_ZERO_ON_LEFT, чтобы вызвать заголовки для   использования прав #ifdefs.


5.3 - Linux (Red Hat)


5.3.1 - Почему я имею так много проблем с sendmail после компоновки sendmail с linuxconf ?

Дата: 15 июня, 2000
Модифицирован: 27 сентября, 2000

Не редактируйте sendmail.cf с помощью linuxconf. Этот инструмент и его модуль "mailconf" разработаны и основаны на очень старых правилах, пригодных еще к версии 8.8.7. Вы получите много неисправностей, если все-таки сделаете это. Сначала удостоверитесь, что RPM sendmail-cf  установлен. Тогда создайте ваш собственный myhost.mc файл в /usr/lib/sendmail-cf/cf:

 

 	 % cd /usr/lib/sendmail-cf/cf 	  
         % cp redhat.mc myhost.mc 	 (Редактируйте myhost.mc) 	  
         % m4 ../m4/cf.m4 myhost.mc > myhost.cf (Проверьте этот новый myhost.cf; 
           как только это заведомо исправно, установите это:) 
 	 (Если 8.9.x или ранее:) 
	 % cp myhost.cf /etc/sendmail.cf  
	 % chown root /etc/sendmail.cf 	 
         (Если 8.10.x или позже:) 		  
         % cp myhost.cf /etc/mail/sendmail.cf  
	 % chown root /etc/mail/sendmail.cf 
  
См.  /usr/doc/sendmail/README.cf (или только README) для 
изучения особенностей и подробных команд, как делать это. 

5.3.2 - я сформировал sendmail.cf из sendmail.mc, и это работает до следующей перезагрузки машины. Что происходит ?

Дата: 15 июня, 2000

Если Вы использовали модуль linuxconf  "mailconf" только однажды, ваш sendmail.cf  будет перезаписан при каждой перезагрузке, если будет видно, что sendmail.cf  был изменен с помощью linuxconf. Решением будет удаление  модуля mailconf  из linuxconf. Запустите linuxconf, и идите к пункту Control files and systems > Configure Linuxconf modules Прокрутите до "Module path -> mailconf" и выключите кнопку "this module is active", затем щелкните "Accept" и "quit", чтобы выйти из linuxconf.

Это отключит управление linuxconf's sendmail. Сформируйте sendmail.cf  из sendmail.mc снова (см. 5.3.1), и перезапустите sendmail.


5.3.3 - Почему я не могу принимать почту на RedHat 7.1?

Дата: 3 мая, 2001
Модифицирован: 11 июня, 2001

RedHat изменила  главный принцип работы sendmail. Они решили, что большинство людей нуждается в клиент-ориентированной версии sendmail. В итоге он слушает только интерфейс localhost. Проверьте RH документацию на предмет того, как изменить это:

Удостоверитесь, что Вы установили пакет "sendmail-cf" на вашей системе - он должен быть в вашем дистрибутиве.

Если это так, проверьте файл "sendmail.mc" (вероятно, он находится в "/etc/mail"). Ищите строку "DAEMON_OPTIONS" и закомментируйте эту строку.

Также известно, что RedHat 7.1 компонует sendmail с поддержкой tcpwrapper, и таким образом  файл /etc/hosts.deny  отклоняет всю внешнюю почту (точнее, все соединения с любым портом с указанных адресов -прим.перев.). Добавление  Sendmail:ALL к /etc/hosts.allow  решает для sendmail эту проблему.


Оглавление Sendmail FAQ