Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Настройка PPP и почты под Linux

Вопросы по настройке сети в Linux постоянно всплывают в новостях, поэтому я решил поделиться своим опытом.
Надеюсь что приведенная настройка поможет вам.
Для настройки Linux я использую текстовый редактор и файловые утилиты, никаких диалоговых конфигураторов.
Вся настройка должна производиться привилегированным пользователем (root).
В можете прочитать файлы настройки в он-лайн режиме или загрузить все в виде архива : ppp-conf.tar.bz2

Описание ситуации

В данной статье приводится конкретный пример настройки.
  • Операционная система Slackware Linux. О версии судить сложно, так как она обновлялась вручную от третьей до седьмой и что-то возможно осталось от старой версии.
  • Модем USR Courier с дягилевской прошивкой ("Русский курьер"), один.
  • Два провайдера, логины с различными способами начисления стоимости.
  • Бесплатный почтовый ящик на samara21 от Крафт-С.
  • Во всех случаях используется коммутируемая линия и динамический IP-адрес.

Нам понадобится

  • Ядро версии не старее 2.0.36 , лучше последнее из серии 2.2.х с включенной поддержкой ppp
  • pppd версии не старее 2.3.10 (более старый можно настроить, но некоторые параметры придется переименовать)
  • командный интерпретатор bash или ash
  • sudo для разрешения выхода винтернет определенным пользователям
  • modutils: insmod, kerneld (только для 2.0.x) соответствующие ядру.
  • minicom - для проверки работоспособности модема и линии
  • ftp для закачки ip-адреса на свою страницу у провайдера
  • sendmail - версии 8.x для отправки почты
  • fetchmail - для ее получения

Файлы настроийки

Упоминаемые здесь файлы размещены в следующих каталогах:

/etc

sendmail.cf
sendmail.cf2

/etc/ppp

pap-secrets
ftpparm
ip-down
ip-up
ppp-hang
options
hippo
dial-hippo

/usr/bin

ppp

Настройка PPP

Cначала убедитесь в функционировании модема
Установите ссылку /dev/modem на устройство к которому подключен модем
обычно это /dev/ttyS0 или /dev/ttyS1
# ln -sf /dev/ttyS0 /dev/modem
Загрузите minicom
# minicom
если minicom неправильно сконфигурирован он может не запуститься, тогда воспользуйтесь ключом -s:
# minicom -s
и установите параметры модема
после чего проинициализируйте модем и наберите
AT
модем должен ответить
OK
после этого можно набрать номер сервера доступа провайдера и посмотреть коннект
ATDP430000
CONNECT 33333/ARQ
если вы добились похожего сообщения - можно переходить к настройке ppp.
Файлы настройки pppd собраны в директории /etc/ppp
Запишите сюда указанные выше файлы и отредактируйте их для вашего случая.
Начнем по-порядку

pap-secrets содержит все пароли для протокола авторизации PAP
Замените логины и пароли на ваши
вторая строка :
albina - логин провайдера samtel (Телеграф) и имя компьютера
дальше:
albina - первый логин провайдера hippo (Крафт-С)
belaya - второй логин того же провайдера
khlut - третий логин (бесплатная почта на Крафт-С)
testuser - тестовый логин
guest - входной логин на ваш компьютер
server - имя вашего компьютера

ftpparm содержит команды ftp для записи полученного динамического IP на вашу страницу у провайдера
Этим можно пользоваться например для удаленной настройки компьютера через интернет
Замените
ftp.kraft-s.ru - адрес вашего ftp сервера для доступа к домашней странице
albina - ваш логин
ftppassword - ваш пароль
public_html/IP/albina - путь, где должен лежать файл с IP адресом

hippo это файл дополнительных настроек ориентированных на конкретного провайдера
для другого провайдера его можно скопировать и подкорректировать
debug - запись в системный лог отладочной информации - иногда помогает при определении причины отказа в соединении
nobsdcomp, nodeflate - отключается программное сжатие, т.к. оно обычно не поддерживается серверами удаленного доступа - можно включить, если на другом конце linux или BSD
connect - имя файла со скриптом установки соединения с данным провайдером
idle - время бездействия линии в секундах после которого pppd разорвет связь. В старой версии pppd было использовано другое название данного параметра.

dial-hippo - скрипт дозвона. Функция att вызывается с набираемым номером, если связь установить не удалось - пробуется другой номер и т.д. Лучший номер стоит поставить в начало. Номера здесь соответствуют серверам доступа Крафт-С.
В самой функции можно подрегулировать пределы скорости &N - максимум, &U - минимум. Числа можно получить от модема в minicom по команде AT&$.

ip-up - сердце настройки. Этот скрипт pppd вызывает после установки IP-соединеия с дополнительным аргументом, который можно задать с помощью опции pppd ipparam. Этот аргумент используется здесь для выбора режима работы соединения. Скрипт использует каталог /var/run/ip для записи выданного ip-адреса, так что не забудьте создать этот каталог

Логика обработки установки и разрыва соединения

Скрипты ip-up и ip-down специальным образом обрабатывают повторную выдачу одинаковых ip-адресов.
При первом получении адреса перезапускается демон sendmail и очищается каталог /var/run/ip. Далее в нем создается файл с именем соответствующим выданному адресу, куда записывается pid порождаемого фонового процесса, который ждет 5 секунд и за тем запускает sendmail в режиме обработки очереди. По разрыву соединения данный процесс не уничтожается, в надежде на то что может быть выдан тот же ip-адрес повторно. Если выдается повторно тот же адрес, что определяется по существованию файла с таким именем, то ip-up быстро завершается. Если разрыв соединения происходит после завершения процесса обработки почтовой очереди, производятся другие завершающие действия. В случае если связь рвется до завершения sleep, то sendmail -q быстро определит недоступность сети и завершится.
Таким образом удается обойти повторную выдачу ip адреса с трехсекундной задержкой, которую я наблюдал при соединении с сервером USR, и случаи быстрого разрыва связи.
Данный алгоритм конечно не идеален, и я с удовольствием приму ваши предложения по его улучшению, но вполне работоспособен.

Режимы работы соединения

После проверки выделенного адреса в ip-up обрабатывается аргумент $6 содержащий параметр передаваемый через ipparam в pppd.
Поддерживается несколько режимов:
g - полный доступ с периодическим получением и отправкой почты.
gm - забрать почту и закрыть соединение.
u - отправить почту из очереди и закрыть соединение
ug - забрать почту из бесплатного почтового ящика и закрыть соединение
другое - только запустить обработку почтовой очереди. Это для режима прокси и других вариантов неполного доступа.

Режимы доступа рассмотренных файлов

Скрипты необходимо сделать исполняемыми:
# chmod 744 /ppp/dial-* /ppp/ip-*
Обратите так же внимание на замечания об информационной безопасности в конце данной статьи

Запуск pppd

Для запуска pppd с данной настройкой используйте следующую команду:
# pppd /dev/modem 115200 file /etc/ppp/hippo user USER ipparam MODE
где:
/etc/ppp/hippo - настройка под конкретного провайдера
USER - PAP login
MODE - режим соединения, как описано выше.

Для упрощения запуска pppd можно использовать скрипт вроде следующего:
ppp
который следует запускать с одним аргументом, указывающим требуемый режим.
Назначение режимов ясно из содержимого файла. Логины конечно надо заменить на свои.
Записав данный файл в общедоступный системный каталог вроде /usr/bin можно позволить непривилегированным пользователям устанавливать соединение через команду sudo.

Настройка Sendmail

Sendmail - универсальная и гибкая программа, но к сожалению ни одна из ее стандартных настроек не подходит для диалапа с динамическими адресами, и с каждой версией авторы ужесточают проверки адресов из-за которых почтовые серверы становятся все более несговорчивыми. В то же время докуметация не успевает за развитием программы. Тем не менее мне кажется удалось на текущий момент решить проблему настройки sendmail для рядового пользователя.

В данной настройке используется 2 конфигурационных файла sendmail: один обычный и /etc/sendmail.cf2 с настройкой на другой почтовый сервер, который используется в режиме отправки почты "u". Он ничем не отличается от /etc/sendmail.cf возможно кроме установки smart host.

Найдите в sendmail.cf следующие строки:

# my official domain name
# ... define this only if sendmail cannot automatically determine your domain
Dj
добавьте после Dj имя вашего компьютера которое будет использовано при общении с smtp сервером провайдера и в mime-заголовках.
Это доменное имя должно существовать, иначе удаленный сервер может отказать в соединении, в то же время нельзя здесь использовать имя почтового сервера провайдера. Универсального решения наверно не существует. Сейчас я использую имя dial-up.kraft-s.ru. Некоторые серверы требуют чтобы данное имя имело ip адрес, тогда надо поставить что-то другое, может помочь вариант с одним из динамических адресов
# "Smart" relay host (may be null)
DS
Добавьте после DS имя smtp сервера который будет принимать и отправлять далее всю вашу исходящую почту.
# default delivery mode
O DeliveryMode=d
Поставьте режим d (deferred) чтобы sendmail не пытался сразу отправить письмо, а без проверок клал его в очередь.

В такой конфигурации sendmail может работать как релейный хост вашей локальной сети, но если почта исходит от localhost sendmail подставит имя указанное в макропеременной, определенной строкой Dj. Это может не понравится некоторым особо придирчивым почтовым серверам. Для решения этой проблемы нужно изменить файл следующим образом:
добавить новые макросы (после Dj):
DAимя
DJхост
где имя@хост - адрес вашего ящика у провайдера.
За тем найдите следующие строки:

###################################################################
###  Ruleset 94 -- convert envelope names to masqueraded form   ###
###################################################################

S94
R$* < @ *LOCAL* > $*    $: $1 < @ $j . > $2
последнюю из них замените на:
R$* < @ *LOCAL* > $*    $: $A < @ $J . > $2

Настройка Fetchmail

fetchmail настраивается через файл .fetchmailrc у пользователя, получающего всю почту из почтового ящика у провайдера. В данном случае это - root.
Ниже приведен пример файла /root/.fetchmailrc
poll mail.samaramail.ru protocol pop3 username albina password ***** is boss here
skip samara21.ru protocol pop3 username khlut password ***** is sergey here
skip означает что fetchmail будет работать с этим сервером только при указании его в строке запуска

Безопасность

Установите правильные режимы доступа к файлам с вашими паролями:
# chown -R root.root /etc/ppp
# chmod 0600 /etc/ppp/pap-secrets /etc/ppp/ftpparm /root/.fetchmail

Автоматизация

Проверив работоспособность скриптов, можно заставить компьютер периодически выполнять их в режиме получения и отправки почты. Для этого добавьте в файл /var/spool/cron/crontabs/root следующие строки :
30 * * * * /usr/bin/ppp gm
0,15,45 * * * * /usr/bin/ppp u
Теперь каждый час будет забираться почта и каждые 15 минут отправляться. Если очередь пуста, то pppd запускаться не будет - в скрипте ppp есть проверка.

Обратная связь

Отзывы, комментарии и замечания о данной статье присылайте по адресу:
khlut@samaramail.ru
Если вы столкнулись с трудностями при использовании предложенной настройки, обращайтесь за помощью в конференцию kraft.os.linux

© 2000 Сергей Хлутчин

Распространение данной статьи и всех прилагаемых файлов разрешается с обязательной ссылкой на автора и источник:
http://www.hippo.ru/~khlut
      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP