nixp.ru v3.0

26 мая 2017,
пятница,
14:06:24 MSK

DevOps с компанией «Флант»
Аватар пользователя Дмитрий Шурупов
Дмитрий Шурупов написал 16 апреля 2007 года в 20:21 (782 просмотра) Ведет себя как фрик; открыл 669 тем в форуме, оставил 5643 комментария на сайте.

И вновь — обсуждаем статью. На сей раз:

«Установка и настройка почтового сервера на базе FreeBSD и sendmail»

http://www.nixp.ru/articles/freebsd_mail_server_with_sendmail

Подразумевается обсуждение второй части статьи — «Построение почтового сервера с антивирусом на базе штатного MTA FreeBSD 6.2 (sendmail)».

fly4life

Пусть и не по сути статьи, но с этим: «Что делает настоящий линуксоид перед настройкой боевого сервера? Правильно: проверяет конфигурацию ядра (точнее, пересобирает его).» — я несколько не согласен. Никакого практического смысла в этом действии лично я не вижу (разве что при установке генту. Но даже если и генту, то это не значит, что его ставит «настоящий» линуксоид — в генту просто без этого никак).

Но главное: «почтовый ящик — это реальный системный пользователь» — осталось неизменным — это тоже несовсем верно, поскольку пользователей уже давно научились совать в sql-базу (или сендмыл ещё не?). И, вопреки мнению автора, это достаточно распространённое явление.

Анархист, ядро ты пересобрать не поленился, а сендмыл почему-то побрезговал (я про поддержку протокола ipv6). Разве так поступает настоящий линуксоид? ;)

exses

А матерится ведь не хочется… секцию с сендмайлом уже не осилил :-( Хватило начала.

попробую по пунктам

1. RTFM что такое stable и что такое release (это про политику партии)

2.подарочный набор граблей от FreeBSD — это для тех кто сначала нажимает кнопки а потом читает документацию.

3.для приличия записал бы nameserver IP_NAMESERVER1

4. Задать пароль суперпользователя root (задание которого в стандартную процедуру установки не входит) — а куда вы смотрели при инсталяции? Входит. и пользователей просит создать там же.

5. Также следует заменить значение переменной PAGER с дремуче-традиционного more на less. Не следует, а можно. Завязывать шнурки нужно начиная только с толчковой ноги.

6. можно заняться указанием русской локализации (koi8-r): Это делается одним словом russian при добавлении пользователя (см. логин класс)

7. cons25 меняется на cons25r,Угу. причем на этапе инстала. не надо лезть туда руками.

8. /etc/skel/, который в FreeBSD пустой. для этого смотрим /usr/share/skel

9. Что делает настоящий линуксоид перед настройкой… А для BSD немного не так. сначала обновляемся (cvsup) а потом компилим ядро, а не наоборот как в статье.

10.cp /usr/src/sys/i386/conf/GENERIC ~/MY_KERNEL

/usr/sbin/config MY_KERNEL_CONFIG

Так как ядро то называется?

11. echo \$Z | /usr/sbin/sendmail -bt -d0 Выводится до фига разного интересного, в том числе желаемое:

а к примеру cat /etc/mail/sendmail.cf | grep DZ как вариант?

В общем назначение статьи я не понял :-( На руководство имхо она не тянет…

Обсудить под пиво — «как я пытался ставить почтовый сервер не читая документацию» и посмеяться

Anarchist
exses
А матерится ведь не хочется… секцию с сендмайлом уже не осилил :-( Хватило начала.

попробую по пунктам

А зря.

Там как раз самое интересное.

Впрочем, раз уж некоторые не снизошли до прочтения, не поленюсь задать вопрос явно:

Пожалуйста распишите мне процедуру обновления конфигурации sendmail’а.

Принимаются ссылки ИСКЛЮЧИТЕЛЬНО на FreeBSD.org.

Это в тему обвинения в игнорировании документации.

Думаю, недельки-другой на штудирование содержимого FreeBSD.org тебе хватит…

exses
2.подарочный набор граблей от FreeBSD — это для тех кто сначала нажимает кнопки а потом читает документацию.

С учётом полноты и логичности оной — архивеский аргумент.

exses
3.для приличия записал бы nameserver IP_NAMESERVER1

Вкусовщина.

На аргумент не тянет.

exses
4. Задать пароль суперпользователя root (задание которого в стандартную процедуру установки не входит) — а куда вы смотрели при инсталяции? Входит. и пользователей просит создать там же.

Угу.

Ты хоть раз хотя бы читал конфиги после редактирования набором костылей под названием sysinstall?

exses
5. Также следует заменить значение переменной PAGER с дремуче-традиционного more на less. Не следует, а можно. Завязывать шнурки нужно начиная только с толчковой ноги.

И редактором пользоваться стандартно вкомпиленным?

Что там сейчас joe || ee?

exses
7. cons25 меняется на cons25r,Угу. причем на этапе инстала. не надо лезть туда руками.


exses
8. /etc/skel/, который в FreeBSD пустой. для этого смотрим /usr/share/skel

Вопрос на троечку: а на фига тогда /etc/skel (причём реальный каталог)?

exses
9. Что делает настоящий линуксоид перед настройкой… А для BSD немного не так. сначала обновляемся (cvsup) а потом компилим ядро, а не наоборот как в статье.

Кстати, наш гениальный гуру не подскажет (желательно с ссылочкой на раздел Хэндбука) как на этапе компилляции ядра задать например умолчательное поведение файрволла?

exses
10.cp /usr/src/sys/i386/conf/GENERIC ~/MY_KERNEL

/usr/sbin/config MY_KERNEL_CONFIG

Так как ядро то называется?

Тебе какое дело?

exses
11. echo \$Z | /usr/sbin/sendmail -bt -d0 Выводится до фига разного интересного, в том числе желаемое:

а к примеру cat /etc/mail/sendmail.cf | grep DZ как вариант?

Расшифровку упомянутого DZ, желательно с ссылкой на FreeBSD.org?

exses
В общем назначение статьи я не понял :-( На руководство имхо она не тянет…

Обсудить под пиво — «как я пытался ставить почтовый сервер не читая документацию» и посмеяться

Дружочек всё ещё наивно верит в то, что в документации есть всё?

Anarchist
fly4life
Пусть и не по сути статьи, но с этим: «Что делает настоящий линуксоид перед настройкой боевого сервера? Правильно: проверяет конфигурацию ядра (точнее, пересобирает его).» — я несколько не согласен. Никакого практического смысла в этом действии лично я не вижу (разве что при установке генту. Но даже если и генту, то это не значит, что его ставит «настоящий» линуксоид — в генту просто без этого никак).

В ситуации когда конфиг ядра тебе хорошо известен и там нет ничего лишнего — соглашусь.

Но только в этом случае.

fly4life
Но главное: «почтовый ящик — это реальный системный пользователь» — осталось неизменным — это тоже несовсем верно, поскольку пользователей уже давно научились совать в sql-базу (или сендмыл ещё не?). И, вопреки мнению автора, это достаточно распространённое явление.

Знаю.

Но ты бы это самое, завершил мысль и сказал на каких размерах пользовательской базы это обретает смысл. :)

fly4life
Анархист, ядро ты пересобрать не поленился, а сендмыл почему-то побрезговал (я про поддержку протокола ipv6). Разве так поступает настоящий линуксоид? ;)

Соотношение благодарности и трудозатрат оказалось не в пользу данного решения.

fly4life
Anarchist
В ситуации когда конфиг ядра тебе хорошо известен и там нет ничего лишнего — соглашусь.

Но только в этом случае.

Т.е. пересобрать sendmail оказалось «неблагодарным занятием», а сношаться с перекомпиляцией ядра из-за выноса из него модулей, не нужных в данный момент времени и, собственно, ничему не мешающих, — это всегда пожалуйста? ;).

Anarchist
Знаю.

Но ты бы это самое, завершил мысль и сказал на каких размерах пользовательской базы это обретает смысл. :)

Думаю, 200 пользователей, о которых ты упомянул, — вполне себе повод для сиквела ;). Да и «неизменность» своего изречения ты тоже только что поставил под сомнение ;).

exses

>не подскажет (желательно с ссылочкой на раздел Хэндбука) как на этапе

> компилляции ядра задать например умолчательное поведение файрволла?

/usr/share/doc/en_US.ISO8859-1/books/handbook/

firewalls-ipfw.html

options IPFIREWALL_DEFAULT_TO_ACCEPT

> процедуру обновления конфигурации sendmail’а.

> Принимаются ссылки ИСКЛЮЧИТЕЛЬНО на FreeBSD.org.

А на жесткий диск ссылки можно? /usr/src/contrib/sendmail/doc/

или путь установки вида

cvsup (ports)

cd /usr/ports/mail/sendmail && make install clean

> Расшифровку упомянутого DZ, желательно с ссылкой на FreeBSD.org?

DZ — этот макрос задаёт версию конфигурации Sendmail ((c)ya.ru)

может быть по опциям сендмайла разрешите на sendmail.org ?

> Ты хоть раз хотя бы читал конфиги после редактирования набором костылей под названием sysinstall?

На этапе инстала данный костыль меня полностью устраивает. мусор в виде дубированных записей имхо только в rc.conf

Anarchist
exses
>не подскажет (желательно с ссылочкой на раздел Хэндбука) как на этапе

> компилляции ядра задать например умолчательное поведение файрволла?

/usr/share/doc/en_US.ISO8859-1/books/handbook/

firewalls-ipfw.html

options IPFIREWALL_DEFAULT_TO_ACCEPT

Замечательно.

Теперь — коронный вопрос ПОЧЕМУ эта опция хотя бы НЕ УПОМИНАЕТСЯ в разделе посвящённом сборке ядра?

exses
> процедуру обновления конфигурации sendmail’а.

> Принимаются ссылки ИСКЛЮЧИТЕЛЬНО на FreeBSD.org.

А на жесткий диск ссылки можно? /usr/src/contrib/sendmail/doc/

или путь установки вида

cvsup (ports)

cd /usr/ports/mail/sendmail && make install clean

Прежде чем с умным видом критиковать было бы неплохо таки прочитать вторую часть и усвоить разницу между обновлением ПО и обновлением конфигурации.

exses
> Ты хоть раз хотя бы читал конфиги после редактирования набором костылей под названием sysinstall?

На этапе инстала данный костыль меня полностью устраивает. мусор в виде дубированных записей имхо только в rc.conf

Т.е. приведённый к условно-читаемому состоянию ОСНОВНОЙ конфигурационный файл — фигня?

exses

imho начинаем скатываться к флуду… :-(

мыло кинь. пообщаемся. ses@rapid.dp.ua

Anarchist
exses
imho начинаем скатываться к флуду… :-(

А вот и ожидавшийся ответ на публичо заданные чётко сформулированные, но (увы и ах) неудобные вопросы.

Ты бы, это самое, всё же осилил поиск по FreeBSD.org хотя бы на предмет обновления /etc/mail/aliases…

exses

make aliases для тебя откровение?

да. я недосмотрел слово «конфигурация». было бы проще. обновление конфига идет через редактор и make. (makemap)

С чего ты такой агрессивный? Ты не смог найти в документации ответы и пошел своим путём?

/usr/src/contrib/sendmail/cf/README не осилил?

А публичные

Anarchist
exses
make aliases для тебя откровение?

да. я недосмотрел слово «конфигурация». было бы проще. обновление конфига идет через редактор и make. (makemap)

С чего ты такой агрессивный? Ты не смог найти в документации ответы и пошел своим путём?

/usr/src/contrib/sendmail/cf/README не осилил?

А публичные

Гы.

Интересный гуру.

Всё посылает читать документацию.

И при этом упорно забывает привести цитату из доки к которой он отсылает отвечающей на поставленный вопрос.

Ты бы это самое, прежде чем посылать оппонента читать /usr/src/contrib/sendmail/cf/README потрудился сделать это САМОСТОЯТЕЛЬНО.

И (таки прочитав, а не только услышав от знакомых гуру о факте существования такого крутого файлика) попробовал найти в нём ответ на поставленный вопрос.

Возможно, это смогло бы несколько восстановить адекватность оценки значения документации.

Hint для особо одарённых:

E486: Pattern not found: make aliases

И очередной вопросик:

на хрена-то

#make aliases???

exses

hint для пишущих статьи

# make aliases

/usr/sbin/sendmail -bi -OAliasFile=/etc/mail/aliases

/etc/mail/aliases: 73 aliases, longest 10 bytes, 1108 bytes total

chmod 0640 /etc/mail/aliases.db

если интересно показать крутизну — пиши дальше.

если хочешь чему то научить меня и что то узнать самому — e-mail в предыдущем письме.

Anarchist
exses
hint для пишущих статьи

# make aliases

/usr/sbin/sendmail -bi -OAliasFile=/etc/mail/aliases

/etc/mail/aliases: 73 aliases, longest 10 bytes, 1108 bytes total

chmod 0640 /etc/mail/aliases.db

Воистину, чукча не читатель, чукча — писатель.

Особо одарённым разжёвываю (уже в очередной раз):

в чём заключается разница между

make aliases

и просто

make

exses
если интересно показать крутизну — пиши дальше.

если хочешь чему то научить меня и что то узнать самому — e-mail в предыдущем письме.

Ежели ты такой щибко вумный, то ответь на вопрос: почему сам не написал правильно?

И каким образом публичность полемики может помешать чему-то научиться?

Научить — легко. :) Потому как такие как ты публично в своих ошибках не признаются.

Даже тогда, когда их инвариантно сунут мордой.

ЗЫ: Цитатку из рекомендованного тобой к прочтению /usr/src/contrib/sendmail/cf/README ты так и не привёл.

Что, впрочем, и ожидалось.

Anarchist
exses
>не подскажет (желательно с ссылочкой на раздел Хэндбука) как на этапе

> компилляции ядра задать например умолчательное поведение файрволла?

/usr/share/doc/en_US.ISO8859-1/books/handbook/

firewalls-ipfw.html

options IPFIREWALL_DEFAULT_TO_ACCEPT

Молодца!

Теперь — коронный вопрос: как узнать умолчательное значение этого параметра?

Методом точного научного тыка?

Anarchist
exses
6. можно заняться указанием русской локализации (koi8-r): Это делается одним словом russian при добавлении пользователя (см. логин класс)

7. cons25 меняется на cons25r,Угу. причем на этапе инстала. не надо лезть туда руками.

Настоятельно рекомендую ограничившись рекомендованными тобой настройками попытаться прочитать русские имена файлов не с консоли, а через ssh.

Много интересного и нового для себя откроешь.

Anarchist

Интересно куда наш бздунишка пропал?

exses
6. можно заняться указанием русской локализации (koi8-r): Это делается одним словом russian при добавлении пользователя (см. логин класс)

7. cons25 меняется на cons25r,Угу. причем на этапе инстала. не надо лезть туда руками.

И работает это столь же надёжно и предсказуемо, как попытка указания TimeZone на этапе установки?

А ещё было бы очень интересно посмотреть на то как ты включишь мозги и попытаешься провести ПУБЛИЧНЫЙ умственный эксперимент на предмет описания поведения системы при использовании bash и умолчательным содержимым ~/.profile (кто говорил, что ВСЁ правится на этапе установки?).

atckoe.zlo
Anarchist
Настоятельно рекомендую ограничившись рекомендованными тобой настройками попытаться прочитать русские имена файлов не с консоли, а через ssh.

Много интересного и нового для себя откроешь.

:) Интересно а у вас какая локаль на том компьютере с которого вы заходите по ssh на сервер с freebsd и при этом пытаетесь прочитать имена русских файлов?

Anarchist
atckoe.zlo
:) Интересно а у вас какая локаль на том компьютере с которого вы заходите по ssh на сервер с freebsd и при этом пытаетесь прочитать имена русских файлов?

Интересно, причём здесь локаль? :)

Может быть всё же шелл?

atckoe.zlo
Anarchist
Интересно, причём здесь локаль? :)

Может быть всё же шелл?

Ну как так причем тут локаль

Вот смотрите с компьютера на котором системная локаль скажем юникод вы по ssh заходите на компьютер(сервер) у которого системная локаль кои8р то думаете в терминале который находиться на компьютере с локалью утф будут нормально читаться русские названия файлов в кодировке кои8р? :)

Anarchist
atckoe.zlo
Ну как так причем тут локаль

Вот смотрите с компьютера на котором системная локаль скажем юникод вы по ssh заходите на компьютер(сервер) у которого системная локаль кои8р то думаете в терминале который находиться на компьютере с локалью утф будут нормально читаться русские названия файлов в кодировке кои8р? :)

Вменяемый клиент прочитает значение системной локали сервера (из профиля, который мы обсуждаем) и всё будет отображаться корректно.

Но вот как он может отображать корректно кириллицу, если умолчательным значением в профиле (который по утверждению отдельных «гуру» редактировать не нужно) тип терминала возвращается к значению которое не умеет отображать кириллицу?

atckoe.zlo
Anarchist
Вменяемый клиент прочитает значение системной локали сервера (из профиля, который мы обсуждаем) и всё будет отображаться корректно.

Но вот как он может отображать корректно кириллицу, если умолчательным значением в профиле (который по утверждению отдельных «гуру» редактировать не нужно) тип терминала возвращается к значению которое не умеет отображать кириллицу?

Вминяемый клиент это ssh? Смотрите он же запускается в терминале у которого системная локаль UTF! Тоесть терминал все отображает вам в кодировке UTF-8 и соответственно файлы с русскими названиями в кодировке кои8р он отображает не корректно, но в терминалах типа konsole есть опция в которой можно выбрать кодировку для терминала по типу как в броузерах. Вот

Anarchist
atckoe.zlo
Вминяемый клиент это ssh? Смотрите он же запускается в терминале у которого системная локаль UTF! Тоесть терминал все отображает вам в кодировке UTF-8 и соответственно файлы с русскими названиями в кодировке кои8р он отображает не корректно, но в терминалах типа konsole есть опция в которой можно выбрать кодировку для терминала по типу как в броузерах. Вот

Да ну?

У тебя системная локаль какая?

Допустим UTF8.

Запустил ты эмулятор терминала, прописал в профиль локализацию KOI8-R и запустил новый терминал.

Какая там будет локаль?

atckoe.zlo
Anarchist
Да ну?

У тебя системная локаль какая?

Допустим UTF8.

Запустил ты эмулятор терминала, прописал в профиль локализацию KOI8-R и запустил новый терминал.

Какая там будет локаль?

:) Предположим что локаль будет кои8р, но! тогда остается дело за малым :) за шрифтами которые использует данный эмулятор терминала имеют ли данные шрифты поддержку локали кои8р? :)

Это я к тому что постояно делаю локализацию консоли через sysinstall в момент установки системы , а затем прописываю юзеру класс russian и не разу не было каких либо проблем с отображением русских имен файлов на удаленных серверах заходя на них через ssh ( такое наблюдалось только если на локальной машине использовалась локаль отличная от кои8р , но это легко правилось средствами эмулятора терминала как я и писал выше)

Anarchist
atckoe.zlo
:) Предположим что локаль будет кои8р, но! тогда остается дело за малым :) за шрифтами которые использует данный эмулятор терминала имеют ли данные шрифты поддержку локали кои8р? :)

Это я к тому что постояно делаю локализацию консоли через sysinstall в момент установки системы , а затем прописываю юзеру класс russian и не разу не было каких либо проблем с отображением русских имен файлов на удаленных серверах заходя на них через ssh ( такое наблюдалось только если на локальной машине использовалась локаль отличная от кои8р , но это легко правилось средствами эмулятора терминала как я и писал выше)

Теперь ответь на ключевой вопрос: какой шелл прописан у использовавшихся в эксперименте пользователей?

atckoe.zlo
Anarchist
Теперь ответь на ключевой вопрос: какой шелл прописан у использовавшихся в эксперименте пользователей?

zsh :)

Anarchist
atckoe.zlo
zsh :)

Стандартный настроечный файл не читал, не знаю.

Если поставишь sh || bash — обрадуешься и узнаешь много нового.

atckoe.zlo
Anarchist
Стандартный настроечный файл не читал, не знаю.

Если поставишь sh || bash — обрадуешься и узнаешь много нового.

До использования zsh пользовался csh и тож проблем небыло :) (bash вот точно не пробовал)

Anarchist
atckoe.zlo
До использования zsh пользовался csh и тож проблем небыло :)

И правильно.

Теперь коронный вопрос: ПОЧЕМУ?

Anarchist

Внесённая в статью правка оказалась неработоспособной (информация передаваемая в сессии не переписывалась):

Исправленная версия:

Для подстановки как в поле адреса, так и в SMTP-сессию в автоматически рассылаемых письмах вместо имени пользователя/хоста список рассылки на который должно отвечать на машине осуществляющей рассылку необходимо внести в настройки почтовой системы следующие изменения:

Модифицируются настройки почтовой системы не главного почтового сервера в том числе и потому, что на рабочей системе проводить опыты не есть хорошо.

1. На всякий случай создать резервную копию /etc/mail/sendmail.cf

2. В /etc/mail/mailertable прописать маршрут для исходящей почты:

.                               smtp:$MAILROUTER_HOST

3. Сгенерить и открыть для редактирования исходный файл конфигурации sendmail’а:

# cd /etc/mail

# make

# vim $HOSTNAME.sendmail.mc

4. В этот файл вставить следующий блок:

MASQUERADE_AS(`caotus.ru')
FEATURE(`masquerade_envelope')
FEATURE(genericstable)
GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')
FEATURE(generics_entire_domain)
FEATURE(`masquerade_entire_domain')
MASQUERADE_DOMAIN_FILE(`/etc/mail/masqueraded-hosts')
MASQUERADE_DOMAIN(`caotus.ru')

5. Создать файл /etc/mail/generics-domains

И прописать в него имя хоста осуществляющего рассылку.

6. Создать файл /etc/mail/masqueraded-hosts

и аналогично прописать в него имя хоста осуществляющего рассылку.

7. Создать файл /etc/mail/genericstable и прописать в него замену:

8. Обновить конфигурационные файлы и перезапустить sendmail.

# cd /etc/mail
# make
# make install
# make restart

Anarchist

Статья была переработана и дополнена [практически до окончательного состояния].

Выбор и настройка спам-фильтра вынесена в отдельную статью и доработана до приличного состояния (файл отослан Шурупу).

Ещё не включено в статью следующее дополнение:

Вторая ошибка аналогичного содержания:

https://wwws.clamav.net/bugzilla/show_bug.cgi?id=768

При том, что clamd указанный вирус ловит на ура.

Печальный вывод: clamav-milter в задуманной (standalone) конфигурации недостаточно качественно проработан.

Решение: использовать фичу сканирования средствами внешней программы. В данном случае — собственно clamd.

Обеспечивается добавлением разрешающей строки в /etc/rc.conf:

«clamav_clamd_enable=»YES"»,

запуском демона, исправлением строки запуска milter’а на:

«--quiet --noreject --force-scan --external --timeout=0 --max-children=50»

и перезапуском Milter’а.

Результат: вирус ловится.

На следующий день пришёл ответ из Багзиллы: «Не можем воспроизвести баг».

Откатил на тестовом сервере. Действительно не воспроизводится.

На боевом пока живёт clamd.

Anarchist

Шуруп, грядёт правка/дополнение этой статьи (постараюсь, чтобы оно было предельно просто.

И радикальная ревизия.

Пойдёт в дополнение к существующей статье.

Надеюсь уже после перехода на nixp v3 (без зависимости от наличия времени у тебя).