2008-08-08

Настройка postfix+UUCP, с использованием мультипортовки MOXA


Настройка postfix+UUCP, с использованием мультипортовки MOXA

Автор: Филиппов Алексей

Связь: fa13@bk.ru

Дата создания: 15 июня 2006

Постоянный адрес статьи: http://phas13.blogspot.com/2008/08/postfixuucp-moxa.html

Настройка платы MOXA

Должны быть установлены все возможные компиляторы и исходники ядра.

Устанавливаем в системный блок сервера плату мультипортовки MOXA C32081T, после чего устанавливаем драйвера.

Качаем с сайта www.moxa.com дровишки. Далее все описание будет исходить из предположения, что существует каталог /opt/moxa, к который мы скопировали скачаный архив mxdrv.tgz (/opt/moxa/mxdrv.tgz).

Логинимся в систему под root, после чего:

root> cd /opt/moxa

root> tar xvfz mxdrv.tgz

Перед установкой драйверов для MOXA необходимо создать tty устройства:

root> cd /opt/moxa/mxdrv/driver

root> ./mxmknod

На все задаваемые вопросы жмем ENTER, так как предлагаемое по умолчанию нас устраивает. Далее выполняем компиляцию драйверов:

root> cd /opt/moxa/mxdrv

root> make clean

root> make install

После этого загружаем драйвера в ядро:

root> modprobe moxa

root> cd /opt/moxa/mxdrv/driver

root> ./moxaload y

Настраиваем автоматическую загрузку драйверов в ядро при запуске системы. Для этого сначала проверяем скрипт rc.moxa. Если всё делалось по шагам, то в данный момент драйвера MOXA загружены в ядро. Проверяем:

root> lsmod | grep moxa

Если возвратило что-то типа:

moxa 79532 0

, значит драйвера загружены. Выгружаем их:

root> rmmod moxa

Проверяем скрипт rc.moxa:

root> cd /opt/moxa/mxdrv/driver

root> ./rc.moxa

В результате нам должна быть выдана следующая информация (учтите, MOXA при этом должна быть включена, иначе нам удачи не видать. В принципе, и без нее будет нормально, если все будет делаться правильно, но для 100% уверенности лучше включить):

Intellio Series device driver (Ver. 5.5)

Downloading ......

Board 1: MOXA C320 Turbo/PCI(BusNo=3,DevNo=2) is found.

MOXA Intellio Family driver loaded

Значит скрипт rc.moxa работает правильно.

Устанавливаем его на выполнение при загрузке:

root> cp ./rc.moxa /etc/rc.d

root> ln -s /etc/init.d/rc.moxa /etc/init.d/rc3.d/K20rc.moxa

root> ln -s /etc/init.d/rc.moxa /etc/init.d/rc3.d/S20rc.moxa

root> ln -s /etc/init.d/rc.moxa /etc/init.d/rc5.d/K20rc.moxa

root> ln -s /etc/init.d/rc.moxa /etc/init.d/rc5.d/S20rc.moxa

Все, на этом установка драйверов заканчивается. Перегружаемся и проверяем, что после перезагрузки драйвера MOXA в ядро загружены. Если что-то не получилось, значит либо невнимательно делали, либо без бубна не обойтись ;).

Осталось только прикрутить модемы на мультипортовку, и ехать дальше.

Настройка MGETTY

Итак, mgetty будет заниматься перехватом вызовов, приходящих на модемы. Если сейчас позвонить на модемный номер, то модем трубку не возьмет. А зачем? Ему ведь еще никто не сказал, что это неправильно ;).

В конфигурации mgetty нас интересуют два файла:

/etc/mgetty+sendfax/login.config

/etc/mgetty+sendfax/mgetty.config

Поэтому первым делом мы сохраняем оригиналы файлов, а потом редактируем.

В файле login.config удаляем все (чтоб было поменьше мусора, который мы всегда сможем восстановить из резервной копии) и прописываем следующее:

uu* uucp @ /usr/sbin/uucico -l -u @

Дальше редактируем файл /etc/mgetty+sendfax/mgetty.config. Точно также удаляем все лишнее. Оставляем следующее:

debug 4

fax-id

speed 115200

port-owner uucp

port-group uucp

port-mode 0664

port ttyA11

data-only y

port ttyA12

data-only y

port ttyA13

data-only y

port ttyA14

data-only y

port ttyA15

data-only y

port ttyA16

data-only y

#port ttyA17

#data-only y

#port ttyA18

#data-only y

#port ttyA21

#data-only y

#port ttyA22

#data-only y

#port ttyA23

#data-only y

#port ttyA24

#data-only y

#port ttyA25

#data-only y

#port ttyA26

#data-only y

#port ttyA27

#data-only y

#port ttyA28

#data-only y

Внимание!!! Неиспользуемые порты закомментированы. Номер порта состоит из номера секции мультипортовки и собственно номера порта. На данный момент предполагается, что подключено 6 модемов. При установке новых модемов необходимо прописать необходимые порты в данном файле. Иначе работать не будет.

Теперь настраиваем, чтоб mgetty автоматом запускалась на настроенных портах. Для этого редактируем файл /etc/inittab. В конец файла добавляем следующие строки:

A11:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA11

A12:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA12

A13:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA13

A14:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA14

A15:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA15

A16:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA16

#A17:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA17

#A18:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA18

#A21:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA21

#A22:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA22

#A23:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA23

#A24:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA24

#A25:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA25

#A26:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA26

#A27:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA27

#A28:23:respawn:/usr/sbyn/mgetty -x0 -s 115200 ttyA28

Внимание!!! Неиспользуемые порты необходимо закомментировать.

После этого перегружаемся и проверяем, запущено ли mgetty на указанных портах:

root> ps ax | grep mgetty

В результате мы должны получить примерно следующее:

10591 ? Ss 0:00 /usr/sbin/mgetty -x0 -s 115200 ttyA11

10590 ? Ss 0:00 /usr/sbin/mgetty -x0 -s 115200 ttyA12

10584 ? Ss+ 0:00 /usr/sbin/mgetty -x0 -s 115200 ttyA13

10583 ? Ss+ 0:00 /usr/sbin/mgetty -x0 -s 115200 ttyA14

10582 ? Ss+ 0:00 /usr/sbin/mgetty -x0 -s 115200 ttyA15

10581 ? Ss+ 0:00 /usr/sbin/mgetty -x0 -s 115200 ttyA16

10618 pts/0 S+ 0:00 grep mgetty

Теперь звоним на модем и проверяем, чтобы он взял трубку. Если нет – берем в руки бубен, прыгаем, бубним, и думаем, что провтыкали...

Настройка UUCP

Первым делом идем в папку /etc/uucp. По умолчанию, даже после свежей установки uucp, эта папка пустая. А если не пустая - то все равно ее содержимое никакой пользы нам не принесет. Так что с чистой совестью все из нее удаляем, предварительно сохранив где-нибудь... Мало ли что ;)

После этого создаем следующий набор файлов, пока пустых (указаны абсолютные пути):

/etc/uucp/config

/etc/uucp/passwd

/etc/uucp/port

/etc/uucp/sys

Меняем права доступа к каталогам uucp:

root> chown uucp:uucp /etc/uucp -R

Редактируем файл /etc/uucp/config. В этом файле описывается общая конфигурация uucp сервера:

sysname hronos

max-uuxqts 4

#debug all

Редактируем файл /etc/uucp/passwd. В этом файле перечисляются пользователи и пароли для доступа к uucp серверу:

uubzres kajshd

uubrres kjhKhgyw

uuvares L345jabr

uuvlres Djhu&*fy

uuvrres JGH&JKJyf

uuvpres uuhsgjd7

uugnres Cegtlsdkhvyjuj

uugpres hjVtkbz';l

uugsres lgjcktqqwe

uuivres thytityfkeqwe3

uuklres jpfdh3737h

uukvres xegg2hw

uunvres golwwe3

uunsres brjdcrqsjdhd2

uunkres jvjnbyfa,smds28

uuntres nlfq,sjd2

uuskres rjntrf.as1243d

uucrres jujyasd.a;l3

uucpres yjdbyfas,d92

uuksdi thyjqas,md9i2

Редактируем файл /etc/uucp/port:

port TCP

type tcp

service 540

Редактируем файл /etc/uucp/sys. В этом файле описываются т.н. системы uucp:

call-login *

call-password *

time never

local-send /

local-receive /

protocol gGt

system brres

called-login uubrres

system bzres

called-login uubzres

system cpres

called-login uucpres

system crres

called-login uucrres

system gnres

called-login uugnres

system gpres

called-login uugpres

system gsres

called-login uugsres

system ivres

called-login uuivres

system klres

called-login uuklres

system kvres

called-login uukvres

system nkres

called-login uunkres

system nsres

called-login uunsres

system ntres

called-login uuntres

system nvres

called-login uunvres

system skres

called-login uuskres

system vares

called-login uuvares

system vlres

called-login uuvlres

system vpres

called-login uuvpres

system vrres

called-login uuvrres

system ksdi

called-login uuksdi

Для добавления еще одной системы uucp необходимо добавить набор из последних 2-х строк, с учетом имени добавляемой системы и домена.

После этого проверяем корректность конфигурационных файлов uucp:

root> uuchk

Внимательно смотрим логи. Если ошибок нет - конфиги написаны правильно.

Очередь в uucp можно проверить так:

uucp> uustat -a

Настройка CLAMAV

Первым делом в каталоге /var/log создаем директорию, куда clamav будет складывать логи работы. Так как clamav будет работать под пользователем vscan, то даем этому пользователю права на эту директорию:

root> mkdir /var/log/clamav

root> chown vscan:vscan /var/log/clamav -R

Настраиваем clamav. Все настройки clamav находятся в файле /etc/clamav.conf:

# ArchiveBlockMax

ArchiveMaxFileSize 1M

ArchiveMaxRecursion 5

ArchiveMaxFiles 1000

FixStaleSocket

Foreground

LocalSocket /var/lib/clamav/clamd-socket

LogFacility LOG_MAIL

LogFile /var/log/clamav/clamav.log

LogFileUnlock

LogFileMaxSize 0

LogSyslog

LogVerbose

PidFile /var/lib/clamav/clamd.pid

ScanRAR

User vscan

Подробное описание указанных в /etc/clamav.conf параметров можно почитать в манах для clamav.conf (man clamav.conf).

После этого необходимо запустить демон clamd:

root> /etc/init.d/clamd start

Кроме того, нам необходимо, чтоб clamd автоматически стартовал при запуске системы:

root> ln -s /etc/init.d/clamd /etc/init.d/rc3.d/K08clamd

root> ln -s /etc/init.d/clamd /etc/init.d/rc3.d/S14clamd

root> ln -s /etc/init.d/clamd /etc/init.d/rc5.d/K08clamd

root> ln -s /etc/init.d/clamd /etc/init.d/rc5.d/S14clamd

Чтоб не делать это руками, можно использовать «Runlevel Editor» в yast. Указать там автостарт сервиса.

Теперь настраиваем автоматическое обновление антивирусных баз clamav. За сие замечательное занятие отвечает демон freshclam. Все его настройки храняться в файле /etc/freshclam.conf:

Checks 2

DatabaseMirror database.clamav.net

DatabaseOwner vscan

HTTPProxyServer st.mydomain.com

HTTPProxyPort 3128

LogFacility LOG_MAIL

LogSyslog

NotifyClamd

PidFile /var/lib/clamav/freshclam.pid

UpdateLogFile /var/log/clamav/freshclam.log

Подробнее о параметрах файла /etc/freshclam.conf можно почитать в манах для freshclam.conf (man freshclam.conf). Естественно, в настройках прокси необходимо указать корректные данные.

Кроме того, нам необходимо, чтоб freshclam автоматически стартовал при запуске системы:

root> ln -s /etc/init.d/freshclam /etc/init.d/rc3.d/K08freshclam

root> ln -s /etc/init.d/freshclam /etc/init.d/rc3.d/S14freshclam

root> ln -s /etc/init.d/freshclam /etc/init.d/rc5.d/K08freshclam

root> ln -s /etc/init.d/freshclam /etc/init.d/rc5.d/S14freshclam

Чтоб не делать это руками, можно использовать «Runlevel Editor» в yast. Указать там автостарт сервиса.

Теперь нужно установить clamsmtp, приблуда необходима для связи postfix с clamav. В моем случае я выкачал http://memberwebs.com/nielsen/software/clamsmtp/clamsmtp-1.8.tar.gz. Архив распаковал во временную директорию /_tmp/clamsmtpd. Далее устанавливаем:

root> cd /_tmp/clamsmtpd/clamsmtp-1.8

root> ./configure

root> make

root> make check

root> make install

root> mkdir /usr/local/etc

root> cp doc/clamsmtpd.conf /usr/local/etc

root> cd /

root> rm -r /_tmp

Настраиваем этот самый clamsmtp. Его настройки хранятся в файле /usr/local/etc/clamsmtpd.conf. Оригинал сохраняем, исходную копию редактируем:

OutAddress: 10026

Listen: 0.0.0.0:10025

ClamAddress: /var/lib/clamav/clamd-socket

TempDirectory: /tmp

User: vscan

Теперь нужно, чтоб clamsmtpd стартовал при запуске системы... Качаем http://memberwebs.com/nielsen/software/clamsmtp/contrib/clam_x_rc_script.tar.gz. Это есть скрипт для автостарта clamsmtpd, созданный специально для SuSE. Из архива файлик clamgate копируем в /etc/init.d. После этого редактируем его:

user=clamav меняем на user=vscan

Ставим # (то есть по виндузятному наречию рэмим) перед строчками:

su -m $user -c "$prefix/sbin/clamd"

rc_check

[ -f $piddir/clamd.pid ] && kill `cat $piddir/clamd.pid`

rc_check

checkproc -p $piddir/clamd.pid $prefix/sbin/clamd

rc_check

Смысл сего шага в том, чтоб отключить запуск демона clamd через сей замечательный скрипт. Ну ведь логично – зачем нам это делать здесь, если это уже сделано в другом месте???

Потом выполняем:

root> ln -s /var/lib/clamav /var/run/clamav

root> ln -s /usr/sbin/clamd /usr/local/sbin/clamd

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

Теперь собственно ставим линки на автозагрузки:

root> ln -s /etc/init.d/clamgate /etc/init.d/rc3.d/K08clamgate

root> ln -s /etc/init.d/clamgate /etc/init.d/rc3.d/S14clamgate

root> ln -s /etc/init.d/clamgate /etc/init.d/rc5.d/K08clamgate

root> ln -s /etc/init.d/clamgate /etc/init.d/rc5.d/S14clamgate

Тут засада есть в том, что yast какого-то перца не дает сделать линки через Runlevel Editor, поэтому придется ручками :). Хотя попробуйте, может Вам даст...

Настройка POSTFIX

ВНИМАНИЕ!!! Не в коем случае нельзя менять права доступа к файлам параметров postfix и давать возможность записи в них кому-нибудь кроме root:root!!!

Базовые параметры почтового сервера PostFIX настраиваются в конфигурационном файле main.cf. При добавлении или изменении параметра необходимо следить, чтоб параметр не повторялся. Кроме параметров по умолчанию, приписаных в этом файле при установке, дописываем и модифицируем следующие:

inet_interfaces = all

local_recipient_maps =

mailbox_size_limit = 0

message_size_limit = 1024000

mydestination = $myhostname, localhost.$mydomain,

nkres.mydomain.com,

brres.mydomain.com,

bzres.mydomain.com,

cpres.mydomain.com,

crres.mydomain.com,

gnres.mydomain.com,

gpres.mydomain.com,

gsres.mydomain.com,

ivres.mydomain.com,

klres.mydomain.com,

kvres.mydomain.com,

nsres.mydomain.com,

ntres.mydomain.com,

nvres.mydomain.com,

skres.mydomain.com,

vares.mydomain.com,

vlres.mydomain.com,

vpres.mydomain.com,

vrres.mydomain.com

mydomain = mydomain.com

myhostname = bluebird.mydomain.com

mynetworks = 127.0.0.0/8 10.1.1.0/28 10.1.11.0/28

# add for clamav

content_filter = scan:127.0.0.1:10025

receive_override_options = no_address_mappings

После этого проверяем корректность файла параметров:

root> postfix check

Если никаких ошибок небыло выдано - значит синтаксис файла корректен.

Определение того, по какому транспорту почта будет доставляться в почтовые домены, определенные в параметре mydestination, происходит в файле /etc/postfix/transport:

brres.mydomain.com uucp:brres

bzres.mydomain.com uucp:bzres

cpres.mydomain.com uucp:cpres

crres.mydomain.com uucp:crres

gnres.mydomain.com uucp:gnres

gpres.mydomain.com uucp:gpres

gsres.mydomain.com uucp:gsres

ivres.mydomain.com uucp:ivres

klres.mydomain.com uucp:klres

kvres.mydomain.com uucp:kvres

nkres.mydomain.com uucp:nkres

nsres.mydomain.com uucp:nsres

ntres.mydomain.com uucp:ntres

nvres.mydomain.com uucp:nvres

skres.mydomain.com uucp:skres

vares.mydomain.com uucp:vares

vlres.mydomain.com uucp:vlres

vpres.mydomain.com uucp:vpres

vrres.mydomain.com uucp:vrres

ksdi.mydomain.com uucp:ksdi

После этого выполняем:

root> postmap /etc/postfix/transport

Теперь беремся за файлик /etc/postfix/master.cf. Дописываем в этот файл следующее:

# AV scan filter (used by content_filter)

scan unix - - n - 16 smtp

-o smtp_send_xforward_command=yes

# For injecting mail back into postfix from the filter

127.0.0.1:10026 inet n - n - 16 smtpd

-o content_filter=

-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks

-o smtpd_helo_restrictions=

-o smtpd_client_restrictions=

-o smtpd_sender_restrictions=

-o smtpd_recipient_restrictions=permit_mynetworks,reject

-o mynetworks_style=host

-o smtpd_authorized_xforward_hosts=127.0.0.0/8

После этого перезапускаем postfix:

root> /etc/init.d/postfix restart


ЕСЛИ ПОСЛЕ ЭТОГО ВСЕ ЗАРАБОТАЛО – ПОЗДРАВЛЯЮ ВАС, ВЫ ШАМАНЫ!!! ;)


Комментариев нет: