Создание модуля программно-аппаратного комплекса по протоколам высокого уровня под операционную систему Linux
Основные понятия Proxy-сервера. Принцип сочетания централизации и децентрализации. Выбор протокола для почтового сервера. Синтез глобальных приоритетов. Описание входных и выходных данных. Основные свойства программного продукта, его назначение.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 27.06.2012 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
При авариях на АЭС выделяются 5 зон радиоактивного загрязнения.
Зона радиационной опасности (М) - представляет собой участок загрязненной местности, в пределах которой доза излучения на открытой местности может составлять от 5 до 50 рад. в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 0,014 рад/час.
В пределах зоны «М» целесообразно ограничить пребывание людей, не привлекаемых непосредственно к работам по ликвидации последствий радиационной аварии. При ликвидации аварии в зоне «М» и во всех других зонах должны выполняться основные мероприятия: радиационный и дозиметрический контроль, защита органов дыхания, профилактический прием йодосодержаших препаратов, санитарная обработка людей, дезактивация обмундирования и техники.
Зона умеренного загрязнения (А) - представляет собой участок загрязнение местности, в пределах которой доза излучения может составлять от 50 до 500 рад. в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 0,14 рад/час. Действия формирований в зоне «А» необходимо осуществлять в защитной технике с обязательной защитой органов дыхания.
В зоне сильного загрязнения (Б) - доза излучения составляет от 500 до 1500 рад. в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 1.4 рад/час. Действия формирований необходимо осуществлять в защитной технике с размещением в защитных сооружениях.
В зоне опасного загрязнения (В) - доза излучения составляет от 1500 до 5000 рад в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 4,2 рад/час. Действия формирований возможно только в сильно защищенных объектах и технике. Время нахождения в зоне - несколько часов.
В зоне чрезвычайного опасного загрязнения (Г) - доза излучения может составлять больше 5000 рад в год. На внешней границе этой зоны уровень радиации через 1 час после аварии составляет 14 рад/час. В зоне нельзя находиться даже кратковременно.
Оценка радиационной обстановки при аварии на АЭС сводится к определению методом прогноза доз излучения и выработке оптимальных режимов деятельности людей при нахождении их в прогнозируемой зоне загрязнения.
При расчетах необходимо руководствоваться допустимой дозой облучения, установленной для различных категорий населения, оказавшегося в зоне радиоактивного загрязнения при аварии на АЭС.
– Население, рабочие и служащие, не привлекаемые в мирное время к работе с радиоактивными веществами - 1 мЗв в год;
– Население, рабочие и служащие, персонал, привлекаемые в мирное время к работе с радиоактивными веществами - 2 мЗв в год;
– Постоянно работающие с радиоактивными веществами - 20 мЗв в год.
В первые часы и сутки после аварии действие на людей загрязнения окружающей среды определяется внешним облучением от радиоактивного облака (продукты деления ядерного топлива, смешанные с воздухом), радиоактивных выпадений на местности (продукты деления, выпадающие из радиоактивного облака), внутренним облучением вследствие вдыхания радиоактивных веществ из облака, а также за счет загрязнения поверхности тела человека этими веществами. В дальнейшем, в течение многих лет, накопление дозы облучения будет происходить за счет употребления загрязненных продуктов питания и воды.
Важной особенностью аварийного выброса радиоактивных веществ является то, что они представляют собой мелкодисперсные частицы, обладающие свойством плотного сцепления с поверхностями предметов, особенно металлических, а также способностью сорбироваться одеждой и кожными покровами человека, проникать в протоки потовых и сальных желез. Это снижает эффективность дезактивации (удаление радиоактивных веществ) и санитарной обработки (мероприятия по ликвидации загрязнения с поверхности тела человека).
Режимы радиационной защиты -- это порядок действия людей, применения средств и способов защиты в зонах радиоактивного заражения, предусматривающий максимальное уменьшение возможных доз облучения. Соблюдение режимов радиационной защиты исключает радиационные поражения и облучение людей сверх установленных доз облучения:
· на военное время;
· однократное облучение в течение первых 4-х суток 50 рад;
· многократное облучение в течение 30 суток 100 рад»
· многократное облучение в течение 3 месяцев 200 рад;
· многократное облучение в течение года не более 300 рад;
Режим радиационной защиты рабочих и служащих включает три основных этапа:
1. Продолжительность прекращения работы объекта народного хозяйства (время непрерывного пребывания людей в ПРУ).
2. Продолжительность работы объекта с использованием для отдыха защитных сооружений.
3. Продолжительность работы объекта с ограничением пребывания рабочих и служащих на открытой местности.
Режимы радиационной защиты разработаны с учетом продолжительности работы каждой смены 1 - 12 часов.
В зависимости от складывающейся радиационной обстановки проводятся следующие мероприятия по защите населения:
· ограничение пребывания населения на открытой местности путем временного укрытия в убежищах и домах с герметизацией жилых и служебных помещений на время рассеивания РВ в воздухе;
· предупреждение накопления радиоактивного йода в щитовидной железе -- йодная профилактика (прием внутрь препаратов стабильного йода: йодистый калий, 5%-ная йодная настойка);
· эвакуация населения при высоких мощностях доз излучения и невозможности выполнить соответствующий режим радиационной защиты;
· исключение или ограничение потребления пищевых продуктов;
· проведение санобработки с последующим дозиметрическим контролем;
· простейшая обработка поверхностно загрязненных продуктов питания (обмывание, удаление поверхностного слоя);
· защита органов дыхания подручными средствами (полотенца, носовые платки и т. п.), лучше увлажненными;
· перевод с/х животных на незараженные пастбища или фуражные корма -- дезактивация загрязненной местности;
· соблюдение населением правил личной гигиены:
· ограничить время пребывания на открытой местности;
· мыть обувь и вытряхивать одежду перед входом в помещение;
· не пить воду из открытых водоисточников и не купаться в них;
· не принимать пищу и не курить;
· не собирать фрукты, ягоды, грибы на загрязненной территории и др.
10.2 Расчетная часть
Расчетная часть выполнена по методическим указаниям [26].
Расчётную часть выполним для следующих исходных данных:
- тип реактора РБМК-1000;
- мощность реактора 1000 Мвт;
- количество аварийных реакторов - n = 1;
- доля выброса радиоактивных веществ в процентах - h = 50%
- дата аварии - 15 марта 2012 г.
- время, в которое произошла авария - Тав = 14 час.00 мин.
- время начала работы - Тнач = 16.00 час.;
- начало работы после аварии - Тн = Тнач-Тав=2 час.;
- продолжительность работы - Траб = 12 часов;
- коэффициент ослабления мощности дозы - Косл = 5;
- метеоусловия:
скорость ветра на высоте 10 м - V10 = 5 м/с;
направление ветра - в сторону лаборатории;
облачность - средняя (4 балла);
- расстояние от объекта до АЭС - Rх = 40 км.;
- допустимая доза облучения за время работы - Dуст = 1 бэр;
- обеспеченность убежищами (СИЗ) - 100%
Определим категорию устойчивости атмосферы, соответствующую погодным условиям и заданному времени суток. По условию: облачность средняя (4 б), скорость приземного ветра V10 = 5 м/с. Таким образом, категория устойчивости Д (изометрия).
Определим среднюю скорость ветра Vср в слое распространения радиоактивного облака: для категории устойчивости Д и скорости приземного ветра V10 = 5 м/с средняя скорость ветра Vср = 5 м/с.
Для заданного типа ЯЭР (РБМК-1000), доли выброшенных радиоактивных веществ (h = 50%) и средней скорости ветра Vср = 5 м/с определим размеры прогнозируемых зон загрязнения местности (Таблица 10.1) и нанесем их в масштабе в виде правильных эллипсов (Рисунок 10.1).
Таблица 10.1 - Размеры прогнозируемых зон загрязнения местности на следе облака при аварии на АЭС
Зона |
Длина зоны, км |
|
М |
585 |
|
А |
191 |
|
Б |
47,1 |
|
В |
23,7 |
Рисунок 10.1 - Прогнозируемые зоны загрязнения местности
Исходя из заданного расстояния от объекта до аварийного реактора (RX = 40,0 км) с учетом образующихся зон загрязнения устанавливаем, что объект окажется на внешней границы зоны «Б».
Определим время начала формирования следа радиоактивного загрязнения (tФ) после аварии (время начала выпадения радиоактивных осадков на территории лаборатории). Для RX = 40,0 км, категории устойчивости Д и средней скорости ветра VСР = 5 м/с получаем tФ = 2 ч. Следовательно, лаборатория через 2 часа после аварии окажется в зоне загрязнения, что потребует дополнительных мер по защите персонала лаборатории.
Для зоны загрязнения «Б» с учетом времени начала работы после аварии (Тнач = 2 ч) и продолжительности работы (Траб = 12 ч) определим дозу облучения, которую получат сотрудники лаборатории при открытом расположении в середине зоны «Б»: Дзоны = 17,1 БЭР. Расчет дозы с учетом внешней границы произведем по формуле (10.1):
, (10.1)
где Кзоны = 1,7, КОСЛ = 5.
Расчет показывает, что сотрудники лаборатории за 12 часов работы в зоне «Б» могут получить больше установленной дозы (Дуст = 1,0 бэр).
Определим допустимое время начала работы сотрудников лаборатории после аварии на АЭС при условии получения дозы не более Дуст = 1,0 бэр:
;(10.2)
.
Согласно и Траб = 12 часов получаем Тнач = 42 часа, то есть можно начинать работу только через 42 часа после аварии на АЭС и работать полную смену (Траб = 12 часов).
По исходным данным необходимо начать работу после аварии через 2 часа (Tнач = 16.00 ч). По значению Tн = 2 часа и рассчитанной дозе с учетом Дуст = 1,0 бэр, находим продолжительность работы Траб = 5 час. Полученные результаты сведены в таблицу 1.2.
Следовательно, сотрудники лаборатории, чтобы получить дозу не выше DУСТ = 1,0 БЭР, могут начинать работу в зоне «Б» через 42 часа и выполнять ее 12 часов или при начале работы через 2 часа (по условию) могут работать только не более 5 часов
Таблица 10.2 - Сводная таблица рассчитанных данных
Категорияустойчивостиатмосферы |
Vср,м/с |
Зона,место взоне |
tф, ч |
Дз, бэр |
Добл, бэр |
D'з, бэр |
Режим работыДано: 1) Траб; D'з2) Тн; D'зОпред: 1) tнач ?2) tраб ? |
|
Д |
5 |
Б, внешняя граница |
2 |
17,1 |
2 |
8,5 |
1) При D'з=8,5 бэр и Траб=12ч > tнач= 42ч2) При D'з=8,5 бэр и Tн=2 ч > tраб <=5ч |
Вывод:
1) Лаборатория оказалась на внешней границе зоны «Б».
2) Сотрудники могут получить дозу облучения в размере 2 бэр, что превышает допустимую дозу облучения за время работы. Поэтому работникам следует начинать работу в зоне «Б» через 42 часа и выполнять ее 12 часов или при начале работ через 2 часа работать не более 5 часов.
3) Радиоактивное облако подойдёт через 2 часа.
10.3 Мероприятия по защите сотрудников лаборатории
1) После получения оповещения о движении радиоактивного облака установить в лаборатории непрерывное радиационное наблюдение с переносными дозиметрическими приборами;
2) При прохождении радиоактивного облака сотрудников лаборатории укрыть в убежище или ПРУ;
3) По данным разведки уточнить прогнозируемую радиационную обстановку;
4) При уровнях радиации () на открытой местности сотрудники лаборатории должны находиться в респираторах или противогазах;
5) Во избежание облучения сотрудников лаборатории необходимо организовать сменную работу с учетом допустимой дозы;
6) Для исключения заноса радиоактивных веществ внутрь помещений лаборатории необходимо их герметизировать, а при наличии фильтровентиляционных установок включить их в режиме «чистой вентиляции»;
7) После выпадения радиоактивных осадков и снижении загрязнения территории лаборатории произвести дезактивационные работы с последующим контролем степени загрязнения;
8) При больших уровнях загрязненности и невозможности работы сотрудников лаборатории необходимо эвакуировать в незагрязненные районы.
ЗАКЛЮЧЕНИЕ
В дипломном проекте была разработана программная система оптимизации работы сети по протоколам высокого уровня как часть программно-аппаратного комплекса, ориентированная на использование в небольших локальных сетях и в университетских лабораториях компьютерных сетей для проведения практических занятий. В процессе выполнения проекта были получены следующие результаты:
- проанализированы литературные источники по теме;
- исследована область применения систем такого класса и актуальность их внедрения в наше время;
- проведен системотехнический анализ задачи, в результате которого были выявлены принципы оптимального разбиения на подзадачи для оптимизации процесса разработки и улучшения ее качества;
- проведен вариантный анализ при выборе протокола электронной почты, FTP-сервера, DNS-сервера;
- разработана и воплощена методика тестирования системы;
- проведен расчет технико-экономических показателей проектируемого продукта;
- проанализированы аспекты охраны труда;
- проведена оценка радиационной обстановки в лаборатории при загрязнении радиоактивными веществами после аварии на АЭС.
Программная система рекомендуется к применению в учебных заведениях, в качестве лабораторного практикума для изучения основных особенностей системного администрирования, а также на малых и средних предприятиях, которые используют программное обеспечение для администрирования компьютерной сети в различных сферах деятельности.
Внедрение системы позволит оптимизировать работу сети под требования конкретной организации. При этом внедрение системы не требует значительных финансовых и временных затрат, что позволяет говорить о перспективной успешности ее применения.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1.Методические указания «Процедура системного анализа при проектировании программных систем» для студентов-дипломников дневной и заочной формы обучения специальности 7.091501 / Сост. Сергеев Г.Г., Скатков А.В., Мащенко Е.Н. - Севастополь каф. КВТ СевНТУ, 2005. - 32с.
2.Щепин Ю.Н. Методические указания к практическому занятию на тему «Метод анализа иерархий» по дисциплине «Теория оптимальных решений» / Ю.Н. Щепин - Севастополь: Изд-во СевНТУ, 2002 - 11с.
3.Стахнов А.А. Сеть для офиса и Linux-сервер своими руками. - СПб.: БХВ-Петербург, 2006. - 320с.:ил.
4.Эви Немет. Руководство администратора Linux.: Пер.с англ. - М.: Издательский дом «Вильямс», 2005. - 880с.: ил. - Парал. тит.англ.
5.Браун П. Введение в операционную систему UNIX. -М.: Мир, 1987. -287 с.
6.Алексей Береснев. Администрирование GNU/Linux с нуля. - СПб.: БХВ-Петербург, 2010. - 576с.:ил.
7.Актуальные ИТ-направления стимулируют использование Linux [Электронный ресурс] / авт. Дэррил Тафт// PC Week/RE №9 (794): 10 апреля 2012г. - Режим доступа: http://www.pcweek.ru/foss/article/detail.php?ID=136556.
8.Патрик Нотон, Герберт Шилдт Полный справочник по Java.- McGraw-Hill,1997, Издательство "Диалектика",1997.
9.Чен М.С. и др.Программирование на JAVA:1001 совет:Наиболее полное руководство по Java и Visual J++:Пер.с англ./Чен М.С.,Грифис С.В.,Изи Э.Ф..-Минск:Попурри,1997.-640с.ил.
10.Методические указания к выполнению курсовой работы по дисциплинам «Основы менеджмента и маркетинга», «Менеджмент» для студентов специальностей 7.091501, 7.091401, 7.080401 всех форм обучения / Сост. Г.А. Раздобреева, Е. В. Коваль, Т.В. Кулешова, С.В. Ключко - Севастополь: Изд-во СевНТУ, 2009. - 24с.
11.Баркен Д.И. Маркетинг для всех / Д.И.Баркен -М.: Редакционно-издательский центр "Культ-информ-пресс", 1991г. - 257с.
12.Котлер Ф. Менеджмент- маркетинг / Ф.Котлер. Пер. с англ.-М.: Прогресс, 2000 -520с.
13.Ильин А.М. Планирование на предприятии / А.М. Ильин - Минск: Инфра - М., 2001- 680с.
14.Богатин Ю.В. Экономическая оценка качества и эффективности работы предприятия / Ю.В.Богатин. - М: Знание, 1999.-214с.
15.Прыкина Л.В. Экономический анализ предприятия / Л.В. Прыкина. - М: Финансы, 2003.- 432с.
16.Методические указания для выполнения раздела «Охрана труда и окружающей среды» в дипломных проектах специальностей 8.080401-«Информационные управляющие системы и технологии», 8.092502-«Компьютерно-интегрированные технологические процессы и производства», 8.091401-«Системы управления автоматики», 8.091501-«Компьютерные системы и сети»/Сост. Е.И. Азаренко. - Севастополь: Изд-во СевНТУ, 2005. - 10 с.
17.ДСанПіН 3.3.2.007-98. Державні санітарні правила і норми роботи з візуальними дисплейними терміналами електронно-обчислювальних машин ЕОМ. - К., 1998. - 17 с.
18.ГОСТ 12.1.005-88. ССБТ. Общие санитарно-гигиенические требования к воздуху рабочей зоны. - Введ. с 01.01.810. - М.: Издательство стандартов, 1988. - 85 с. УДК 658. Группа Т58.
19.ГОСТ 12.1.003 - 89. ССБТ. Шум. Общие требования безопасности. - Введ.01.01.90.
20.ДБН В.2.5-28-2006. Природне і штучне освітлення. - К.: Мінбуд України, 2006. - 12 с.
21.ГОСТ 12.2.008.0-85. ССБТ. Изделия электротехнические. Общие требования безопасности. - Введ. с 10.10.85. - М.: Издательство стандартов, 1988. - 14 с. УДК 614. Группа Т58.
22.ДБН В.1.1.7-2002. Пожежна безпека об'єктів будівництва. - К.: Держбуд України, 2003. - 36с.
23.ГОСТ 12.1.004-85. ССБТ. Пожарная безопасность. Общие требования. - Взамен ГОСТ 12.1.004-86; Введ. с 28.03.85 до 01.08.92. - М.: Издательство стандартов, 1988. - 88 с. УДК 614. Группа Т58.
24.ГОСТ 12.1.006-84. Система стандартов безопасности труда электромагнитные поля радиочастот допустимые уровни на рабочих местах и требования к проведению контроля - Взамен ГОСТ 12.1.006-86; Введ. с 01.01.86 - - М.: Издательство стандартов, 1988. - 10 с. УДК 614.
25.Методические указания к расчётной части раздела «Охрана труда» в дипломных проектах «Расчёт естественного и искусственного освещения». - Севастополь: Изд-во СевНТУ, 2005. - 20с.
26.Методические указания к расчётной части раздела «Безопасность в чрезвычайных ситуациях» в дипломных проектах «Оценка радиационной обстановки в лаборатории при загрязнении радиоактивными веществами после аварии на АЭС». - Севастополь: Изд-во СевНТУ, 2011. - 24с.
27. Колисниченко Д.Н. Linux-сервер своими руками. - 2-е изд., перераб. и доп. - СПб.: Наука и Техника. 2004. - 704 с.: ил.
28. Работа DNS-сервера BIND9 [Электронный ресурс]/ авт. Иванов Павел // Блог любителя экспериментов. - 21 март 2010 г. - 3 декабрь 2011 г. -- Режим доступа: http://www.k-max.name/linux/dns-server-bind
29. Протокол РОР3 [Электронный ресурс]/ авт. Чирков Максим// Раздел «Настройка почты». - 12 апрель 2008 г. - 8 декабрь 2011 г. -- Режим доступа: http://www.linux.opennet.ru/docs/RUS/inet_server/servers_glava2_2.html
30. ProFTPD.conf на русском [Электронный ресурс]/ авт. Черышев Андрей// FTP-сервер для операционной системы Linux. - 24 февраль 2007 г. - 2 ноябрь 2011 г. -- Режим доступа: http://studylinux.ru/linux/network/ftp-proftpdconf-na-russkom.html
31. Конфигурирование DHCP [Электронный ресурс]/ авт. Денис Колисниченко// Настройка DHCP-сервера в Linux. - 14 апрель 2006 г. - 4 март 2012 г. -- Режим доступа: http://studylinux.ru/linux/network/ftp-proftpdconf-na-russkom.html
Приложение А
import java.io.*;
import java.text.ParseException;
import java.util.Calendar;
import javax.swing.JOptionPane;
import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.MaskFormatter;
public class Interface2 extends javax.swing.JFrame {
public Interface2() {
initComponents();
dhcpLabel.setText("<html><u>DHCP-сервер</u></html>");
dnsLabel.setText("<html><u>DNS-сервер</u></html>");
emailLabel.setText("<html><u>Почтовый сервер</u></html>");
ftpLabel.setText("<html><u>FTP-сервер</u></html>");
proxyLabel.setText("<html><u>Proxy-сервер</u></html>");
dnsPanel.setVisible(false);
emailPanel.setVisible(false);
ftpPanel.setVisible(false);
proxyPanel.setVisible(false);
pack();
}
void hideAllPanels(){
dhcpPanel.setVisible(false);
dnsPanel.setVisible(false);
emailPanel.setVisible(false);
ftpPanel.setVisible(false);
proxyPanel.setVisible(false);
}
void runCommand(String command) throws IOException{
Runtime.getRuntime().exec(command);
}
void dhcpAddComponentsHide(){
jLabel6.setVisible(false);
dhcpAddSubnets.setVisible(false);
jLabel2.setVisible(false);
dhcpAddNetMac.setVisible(false);
jLabel3.setVisible(false);
dhcpAddNetmask.setVisible(false);
jLabel4.setVisible(false);
dhcpAddRouter.setVisible(false);
jLabel5.setVisible(false);
dhcpAddDns.setVisible(false);
dhcpAddDialog.pack();
}
void dhcpAddDialogClean(){
dhcpAddSubnets.setSelectedIndex(0);
dhcpAddNetMac.setValue(null);
dhcpAddNetmask.setValue(null);
dhcpAddRouter.setValue(null);
dhcpAddDns.setValue(null);
}
void dnsAddDialogClean(){
zoneName.setValue(null);
zoneType.setSelectedIndex(0);
zoneFileName.setText("");
}
boolean runCheck(String name){
boolean passed = false;
status.setText("");
status.append("Проверка \nустановки демонов... \n\n");
DoRuntime dr = new DoRuntime();
try {
status.append(dr.installVerify(name)+"\n");
switch(name){
case "isc-dhcp-server":
if (dr.isInstalled==true){
dhcpInstallButton.setEnabled(false);
dhcpAddButton.setEnabled(true);
dhcpConfButton.setEnabled(true);
passed = true;
}
else
dhcpInstallButton.setEnabled(true);
break;
case "bind9":
if (dr.isInstalled==true){
dnsInstallButton.setEnabled(false);
dnsAddDomainButton.setEnabled(true);
namedConfButton.setEnabled(true);
passed = true;
}
else
dnsInstallButton.setEnabled(true);
break;
case "exim4":
if (dr.isInstalled==true){
emailInstallButton.setEnabled(false);
eximMainButton.setEnabled(true);
eximAclButton.setEnabled(true);
eximTransportButton.setEnabled(true);
passed = true;
}
else
emailInstallButton.setEnabled(true);
break;
case "proftpd":
if (dr.isInstalled==true){
ftpInstallButton.setEnabled(false);
ftpConnectButton.setEnabled(true);
proftpdConfButton.setEnabled(true);
passed = true;
}
else
ftpInstallButton.setEnabled(true);
break;
case "squid":
if (dr.isInstalled==true){
proxyInstallButton.setEnabled(false);
squidConfButton.setEnabled(true);
passed = true;
}
else
proxyInstallButton.setEnabled(true);
break;
}
} catch(IOException e) {}
return passed;
}
void runCheckDaemon(String name){
status.append("\nПроверка \nзапуска демонов... \n\n");
DoRuntime dr = new DoRuntime();
try {
dr.makeProcSh(name);
runCommand("chmod +x proc.sh");
switch(name){
case "isc-dhcp-server":
if (dr.isRunning()==true){
status.append(name+": запущен"+"\n");
dhcpStartButton.setEnabled(false);
dhcpStopButton.setEnabled(true);
}
else {
status.append(name+": не запущен"+"\n");
dhcpStartButton.setEnabled(true);
dhcpStopButton.setEnabled(false);
}
break;
case "named/named":
if (dr.isRunning()==true){
status.append("bind9: запущен"+"\n");
dnsStartButton.setEnabled(false);
dnsStopButton.setEnabled(true);
}
else {
status.append("bind9: не запущен"+"\n");
dnsStartButton.setEnabled(true);
dnsStopButton.setEnabled(false);
}
break;
case "exim4/exim":
if (dr.isRunning()==true){
status.append("exim4: запущен"+"\n");
emailStartButton.setEnabled(false);
emailStopButton.setEnabled(true);
}
else {
status.append("exim4: не запущен"+"\n");
emailStartButton.setEnabled(true);
emailStopButton.setEnabled(false);
}
break;
case "proftpd":
if (dr.isRunning()==true){
status.append(name+": запущен"+"\n");
ftpStartButton.setEnabled(false);
ftpStopButton.setEnabled(true);
}
else {
status.append(name+": не запущен"+"\n");
ftpStartButton.setEnabled(true);
ftpStopButton.setEnabled(false);
}
break;
case "squid":
if (dr.isRunning()==true){
status.append(name+": запущен"+"\n");
proxyStartButton.setEnabled(false);
proxyStopButton.setEnabled(true);
}
else {
status.append(name+": не запущен"+"\n");
proxyStartButton.setEnabled(true);
proxyStopButton.setEnabled(false);
}
break;
}
} catch (IOException ex) {}
}
void daemonInstall(String daemonName){
String ex_com = "gnome-terminal -x part2/"+daemonName+"_install.sh";
try {
runCommand(ex_com);
} catch (IOException ex) {}
try {
Thread.sleep(8000);
} catch (InterruptedException ex) {}
if (runCheck(daemonName))
runCheckDaemon(daemonName);
}
void daemonStartStop(String daemonName, String command){
String ex_com = "gnome-terminal -x part2/"+daemonName+"_"+command+".sh";
try {
runCommand(ex_com);
} catch (IOException ex) {}
if (runCheck(daemonName))
runCheckDaemon(daemonName);
}
void makeSh(String filename, String[] command) throws IOException{
File file = new File("part2/"+filename);
if (file.exists()) {
file.delete();
}
try (Writer output = new BufferedWriter(new FileWriter(file))) {
output.write("#!/bin/bash");
output.write("\n");
for (int i = 0; i < command.length; i++)
output.write("su --command="+'"'+command[i]+'"');
output.write("\n");
output.close();
}
}
void makeBackupSh(String source, String destination) throws IOException{
File file = new File("part2/backup.sh");
if (file.exists()) {
file.delete();
}
try (Writer output = new BufferedWriter(new FileWriter(file))) {
output.write("#!/bin/bash");
output.write("\n");
output.write("su --command="+'"' + "cp "+source + " " + destination +'"');
output.write("\n");
output.close();
}
}
void identRegSubnets() throws FileNotFoundException, IOException{
dhcpAddSubnets.removeAllItems();
dhcpAddSubnets.addItem("");
File file = new File("/etc/dhcp/dhcpd.conf");
String line;
String[] words;
BufferedReader in = new BufferedReader(new FileReader(file));
while ((line = in.readLine()) != null){
if(line.contains("subnet")){
words = line.split("\\s+");
dhcpAddSubnets.addItem(words[1]);
}
}
}
boolean findMac(File source, String mac) throws FileNotFoundException, IOException{
boolean found = false;
String line;
String[] words;
BufferedReader in = new BufferedReader(new FileReader(source));
while ((line = in.readLine()) != null && found != true){
if (line.contains("hardware")){
words = line.split("\\s+");
if (words[3].equals(mac))
found = true;
}
}
return found;
}
boolean findSubnet(File source, String subnet) throws FileNotFoundException, IOException{
boolean found = false;
String line;
String[] words;
BufferedReader in = new BufferedReader(new FileReader(source));
while ((line = in.readLine()) != null && found != true){
if (line.contains("subnet")){
words = line.split("\\s+");
if (words[1].equals(subnet))
found = true;
}
}
return found;
}
Integer detectLastIP(String subnet) throws FileNotFoundException, IOException{
int lastIP = 255;
File file = new File("/etc/dhcp/dhcpd.conf");
BufferedReader in = new BufferedReader(new FileReader(file));
String line;
String[] words;
String[] numb;
boolean endReached = false;
while(!(line = in.readLine()).contains("subnet "+subnet)) {}
while (!line.contains("host") || line != null){
line = in.readLine();
if (line == null){
endReached = true;
break;
}
}
if (!endReached){
while (!line.contains("fixed-address"))
line = in.readLine();
words = line.split("\\.");
numb = words[3].split("\\;");
lastIP = Integer.parseInt(numb[0]);
}
return lastIP;
}
void makeDHCPConf() throws IOException{
makeBackupSh("/etc/dhcp/dhcpd.conf","/etc/dhcp/backup/dhcpd.conf."+getTimestamp());
String com = "chmod +x part2/backup.sh";
String com1 = "gnome-terminal -x part2/backup.sh";
try {
runCommand(com);
runCommand(com1);
} catch (IOException ex) {}
try {
Thread.sleep(8000);
} catch (InterruptedException ex) {}
File file = new File("/etc/dhcp/dhcpd.conf");
String dhcpOption = dhcpAddOptions.getSelectedItem().toString();
switch(dhcpOption){
case "подсеть":
String netDest = dhcpAddNetMac.getText();
if (!findSubnet(file,netDest)){
String netmask = dhcpAddNetmask.getText();
String gateway = (String) dhcpAddRouter.getValue();
String dns = (String) dhcpAddDns.getValue();
if (gateway == null)
gateway = "";
if (dns == null)
dns = "";
try (Writer output = new BufferedWriter(new FileWriter(file, true))) {
output.write("\nsubnet "+netDest+" netmask "+netmask+" {"+"\n");
output.write("\t"+"option routers "+ gateway +";\n");
output.write("\t"+"option domain-name-servers "+ dns +";\n");
output.write("} #sub-network "+netDest+" end\n");
output.close();
JOptionPane.showMessageDialog(this.dhcpAddDialog, "Подсеть " + netDest + "\nc маской сети " + netmask
+ "\nуспешно зарегистрирована");
}
}
else
JOptionPane.showMessageDialog(this.dhcpAddDialog,
"Данная подсеть уже зарегистрирована",
"Ошибка регистрации подсети",
JOptionPane.ERROR_MESSAGE);
break;
case "узел":
String subnetIn = dhcpAddSubnets.getSelectedItem().toString();
String line;
String[] words;
int lastIP;
String MAC = dhcpAddNetMac.getText();
BufferedReader in = new BufferedReader(new FileReader(file));
words = subnetIn.split("\\.");
lastIP = detectLastIP(subnetIn) - 1;
if (!findMac(file,MAC)){
if (lastIP > 1){
File fileNew = new File("/etc/dhcp/dhcpd.conf.new");
if (fileNew.exists()) {
fileNew.delete();
}
try (Writer output = new BufferedWriter(new FileWriter(fileNew))) {
while(!(line = in.readLine()).contains("subnet "+subnetIn))
output.write(line+"\n");
output.write(line+"\n");
for (int i = 0; i < 2; i++){
line = in.readLine();
output.write(line+"\n");
}
output.write("\n");
output.write("host h" + words[2] + "_" + lastIP + " {" + "\n");
output.write("\thardware ethernet " + MAC + " ;" + "\n");
String obtainIP = words[0] + "." + words[1] + "." + words[2] + "." + lastIP;
output.write("\tfixed-address " + obtainIP + ";\n");
output.write("\t}\n");
while((line = in.readLine()) != null)
output.write(line+"\n");
output.close();
BufferedReader input = new BufferedReader(new FileReader(fileNew));
try (Writer out = new BufferedWriter(new FileWriter(file))) {
while((line = input.readLine()) != null)
out.write(line+"\n");
}
JOptionPane.showMessageDialog(this.dhcpAddDialog, "Узлу с MAC-адресом " + MAC + " \nбудет выдан следующий IP-адрес: " + obtainIP);
}
}
else
JOptionPane.showMessageDialog(this.dhcpAddDialog,
"В данной подсети нет свободного IP-адреса."
+ "\nПожалуйста, проверьте файл dhcpd.conf"
+ "\nили выберите другую подсеть.",
"Ошибка регистрации узла",
JOptionPane.ERROR_MESSAGE);
break;
}
else
JOptionPane.showMessageDialog(this.dhcpAddDialog,
"Узел с MAC-адресом: "+MAC
+ "\nуже зарегистрирован в сети",
"Ошибка регистрации узла",
JOptionPane.ERROR_MESSAGE);
}
}
void prepareZoneFile(String pathfile, String zoneName) throws IOException{
File file = new File(pathfile);
try (Writer output = new BufferedWriter(new FileWriter(file))) {
output.write(";\n");
output.write("; BIND data file\n");
output.write(";\n");
output.write("$TTL 604800\n");
output.write("@ IN SOA "+zoneName+". root."+zoneName+". (\n");
output.write("\t2 ; Serial\n");
output.write("\t604800 ; Refresh\n");
output.write("\t86400 ; Retry\n");
output.write("\t2419200 ; Expire\n");
output.write("\t604800 ) ; Negative Cache TTL\n");
output.write(";\n");
output.write("@ IN NS "+zoneName+".\n");
output.close();
}
}
boolean findZone(String zoneName) throws FileNotFoundException, IOException{
boolean found = false;
File file = new File("/etc/bind/named.conf.default-zones");
BufferedReader input = new BufferedReader(new FileReader(file));
String line;
String searchZone = '"' + zoneName + '"';
String[] words;
while((line = input.readLine()) != null && found != true){
if (line.contains("zone")){
words = line.split("\\s+");
if (words[1].equals(searchZone))
found = true;
}
}
return found;
}
boolean findZoneFile(String zoneFilename) throws FileNotFoundException, IOException{
boolean found = false;
File file = new File("/etc/bind/named.conf.default-zones");
BufferedReader input = new BufferedReader(new FileReader(file));
String line;
String searchFile = '"' + zoneFilename + '"';
String[] words;
String[] result;
while((line = input.readLine()) != null && found != true){
if (line.contains("file")){
words = line.split("\\s+");
result = words[2].split("\\;");
if (result[0].equals(searchFile))
found = true;
}
}
return found;
}
void addZone(String pathfile, String zoneName, String zoneType) throws IOException{
File file = new File("/etc/bind/named.conf.default-zones");
if (zoneType.equals("ptr"))
zoneType = "master";
try (Writer output = new BufferedWriter(new FileWriter(file,true))) {
output.write("\nzone " + '"' + zoneName + '"' + " {\n\t");
output.write("type " + zoneType + ";\n\t");
output.write("file " + pathfile + ";\n");
output.write("};\n");
output.close();
}
}
void setZoneNameFormatter(String mask){
RegexFormatter domainMask = new RegexFormatter(mask);
domainMask.setOverwriteMode(false);
DefaultFormatterFactory macFactory = new DefaultFormatterFactory(domainMask);
zoneName.setFormatterFactory(macFactory);
}
String getTimestamp(){
String timestamp;
Calendar c = Calendar.getInstance();
String date, month, hours, minutes;
date = "" + c.get(Calendar.DATE);
if ((c.get(Calendar.MONTH)/10) == 0)
month = "0" + c.get(Calendar.MONTH);
else month = "" + c.get(Calendar.MONTH);
hours = "" + c.get(Calendar.HOUR_OF_DAY);
if ((c.get(Calendar.MINUTE)/10) == 0)
minutes = "0" + c.get(Calendar.MINUTE);
else minutes = "" + c.get(Calendar.MINUTE);
timestamp = date+"_"+month+"."+hours+":"+minutes;
return timestamp;
}
void setTooltips(){
dhcpAddButton.setToolTipText("Зарегистрировать подсеть или узел");
dhcpConfButton.setToolTipText("Редактировать конфигурационный файл службы dhcpd");
dnsAddDomainButton.setToolTipText("Зарегистрировать доменную зону в сети");
namedConfButton.setToolTipText("Редактировать конфигурационный файл службы bind");
eximMainButton.setToolTipText("Редактировать конфигурационный файл исполнения exim4");
eximAclButton.setToolTipText("Редактировать файл со списком контроля доступом для входящих сообщений");
eximTransportButton.setToolTipText("Редактировать конфигурационный файл протокола отправки сообщений");
ftpConnectButton.setToolTipText("Подключиться к сетевому FTP-серверу");
proftpdConfButton.setToolTipText("Редактировать конфигурационный файл службы proftpd");
squidConfButton.setToolTipText("Редактировать конфигурационный файл службы squid");
terminalButton.setToolTipText("Вызвать терминал Linux");
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/*
* Create and display the form
*/
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Interface2().setVisible(true);
}
});
}
import java.io.*;
public class DoRuntime {
boolean isInstalled = false;
String installVerify(String daemonName) throws IOException {
String result = "";
String arg = "aptitude show "+daemonName;
result += daemonName;
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(arg);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = "";
String words[];
for (int i = 0; i < 3; i++)
line = br.readLine();
words = line.split("\\s+");
if (words[0].equals("Новый")){
line = br.readLine();
words = line.split("\\s+");
}
if (words[1].equals("не"))
result += ": не установлен";
else {
result += ": установлен";
isInstalled = true;
}
return result;
}
boolean isRunning() throws IOException{
boolean run = false;
File file = new File("run.info");
if (file.exists()) {
file.delete();
}
String arg = "gnome-terminal -x ./proc.sh";
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(arg);
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {}
BufferedReader in = new BufferedReader(new FileReader("run.info"));
String line = in.readLine();
if (line.equals("alive"))
run = true;
in.close();
return run;
}
/*
* Создание и формирование sh-файла для проверка запуска процессов
*/
void makeProcSh(String daemonName) throws IOException{
File file = new File("proc.sh");
if (file.exists()) {
file.delete();
}
try (Writer output = new BufferedWriter(new FileWriter(file))) {
output.write("#!/bin/bash");
output.write("\n");
output.write("if su --command="+'"'+"kill -0 $(cat /var/run/"+daemonName+".pid)"+'"');
output.write("\nthen \n\techo alive >> run.info");
output.write("\nelse");
output.write("\n\techo dead >> run.info");
output.write("\nfi");
output.close();
}
}
}
Приложение Б
Файл dhcpd.conf
#
# Sample configuration file for ISC dhcpd for Debian
#
#
# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
#subnet 10.152.187.0 netmask 255.255.255.0 {
#}
# This is a very basic subnet declaration.
#subnet 10.254.239.0 netmask 255.255.255.224 {
# range 10.254.239.10 10.254.239.20;
# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}
# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.
#subnet 10.254.239.32 netmask 255.255.255.224 {
# range dynamic-bootp 10.254.239.40 10.254.239.60;
# option broadcast-address 10.254.239.31;
# option routers rtr-239-32-1.example.org;
#}
# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
# range 10.5.5.26 10.5.5.30;
# option domain-name-servers ns1.internal.example.org;
# option domain-name "internal.example.org";
# option routers 10.5.5.1;
# option broadcast-address 10.5.5.31;
# default-lease-time 600;
# max-lease-time 7200;
#}
# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.
#host passacaglia {
# hardware ethernet 0:0:c0:5d:bd:95;
# filename "vmunix.passacaglia";
# server-name "toccata.fugue.com";
#}
# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
# hardware ethernet 08:00:07:26:c0:a5;
# fixed-address fantasia.fugue.com;
#}
# You can declare a class of clients and then do address allocation
# based on that. The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.
#class "foo" {
# match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}
#shared-network 224-29 {
# subnet 10.17.224.0 netmask 255.255.255.0 {
# option routers rtr-224.example.org;
# }
# subnet 10.0.29.0 netmask 255.255.255.0 {
# option routers rtr-29.example.org;
# }
# pool {
# allow members of "foo";
# range 10.17.224.10 10.17.224.250;
# }
# pool {
# deny members of "foo";
# range 10.0.29.10 10.0.29.230;
# }
#}
Файл named.conf (настройка DNS-сервера)
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
Файл proftpd.conf
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#
# Includes DSO modules
Include /etc/proftpd/modules.conf
# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6 on
# If set on you can experience a longer connection delay in many cases.
IdentLookups off
ServerName "Debian"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
# Use this to jail all users in their homes
# DefaultRoot ~
# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
# RequireValidShell off
# Port 21 is the standard FTP port.
Port 21
# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
# PassivePorts 49152 65534
# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
# MasqueradeAddress 1.2.3.4
# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 30
# Set the user and group that the server normally runs at.
User proftpd
Group nogroup
# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022 022
# Normally, we want files to be overwriteable.
AllowOverwrite on
# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd off
# This is required to use both PAM-based authentication and local passwords
# AuthOrder mod_auth_pam.c* mod_auth_unix.c
# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile off
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default.
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf
#
# This is used for FTPS connections
#
#Include /etc/proftpd/tls.conf
#
# Useful to keep VirtualHost/VirtualRoot directives separated
#
#Include /etc/proftpd/virtuals.con
# A basic anonymous configuration, no upload directories.
# <Anonymous ~ftp>
# User ftp
# Group nogroup
# # We want clients to be able to login with "anonymous" as well as "ftp"
# UserAlias anonymous ftp
# # Cosmetic changes, all files belongs to ftp user
# DirFakeUser on ftp
# DirFakeGroup on ftp
#
# RequireValidShell off
#
# # Limit the maximum number of anonymous logins
# MaxClients 10
#
# # We want 'welcome.msg' displayed at login, and '.message' displayed
# # in each newly chdired directory.
# DisplayLogin welcome.msg
# DisplayChdir .message
#
# # Limit WRITE everywhere in the anonymous chroot
# <Directory *>
# <Limit WRITE>
# DenyAll
# </Limit>
# </Directory>
#
# # Uncomment this if you're brave.
# # <Directory incoming>
# # # Umask 022 is a good standard umask to prevent new files and dirs
# # # (second parm) from being group and world writable.
# # Umask 022 022
# # <Limit READ WRITE>
# # DenyAll
# # </Limit>
# # <Limit STOR>
# # AllowAll
# # </Limit>
# # </Directory>
#
# </Anonymous>
Файл exim-config
######################################################################
# Runtime configuration file for Exim #
######################################################################
# Определяем макросы, описывающие различные пути
CONFIG_PREFIX=/usr/local/etc/exim
ACL_PREFIX=CONFIG_PREFIX/acls
CERTDIR=CONFIG_PREFIX/certs
# Тут мы описываем списки доменов
# Local_domains включает домены, считающиеся локальными, то есть те домены, для
# которых exim делает локальную доставку, для остальных доменов почта
# доставляется по MX записям в DNS. Обратите внимание на дополнительные файлы
# ACL_PREFIX/localdomains и ACL_PREFIX/hostingdomains, в которых перечислены
# домены, разделенные переводом строки (то есть, по одному домену на каждую
# строку)
domainlist local_domains = unona.test.ru : ACL_PREFIX/localdomains : ACL_PREFIX/hostingdomains
# Дополнительная настройка
domainlist hosting_domains = ACL_PREFIX/hostingdomains
# Список хостов, почту на которые мы явно отвергаем
hostlist host_reject = ACL_PREFIX/hostreject
domainlist relay_to_domains =
# Список адресов, с которых разрешена передача почты во внешний мир
hostlist relay_from_hosts = localhost : 192.168.1.0/24 : ACL_PREFIX/relayfromhosts
# Проверка получателя
acl_smtp_rcpt = acl_check_rcptъ
# Проверка mime содержимого
acl_smtp_mime = acl_check_mime
# Проверка на спам и вирусы
acl_smtp_data = acl_check_virus
# Здесь мы описываем наш антивирус
av_scanner = clamd:127.0.0.1 3310
# И spamassasin
spamd_address = 127.0.0.1 783
# Настройки пользователя и группы по умолчанию
exim_user = mailnull
exim_group = mail
# Никогда не осуществляем доставку под рутом - root должен быть алиасом на
# другого локального пользователя. Кстати, это _обязательное_ условие, заданное
# еще на этапе компиляции
never_users = root
# Настройки директории для очереди
spool_directory = /var/spool/exim
# Разделяем spool_directory на несколько более маленьких - аналог хеш таблицы
split_spool_directory
# Пытаемся сделать соответствие прямой и обратной зоны dns для каждого хоста.
# Несколько затратно, но весьма полезно
host_lookup = *
# Убираем проверку identd на клиентской стороне. Из-за неправильно настроенных firewall'ов это часто вызывает длительные тайм-ауты
rfc1413_query_timeout = 0s
# Указываем лимиты
smtp_accept_max = 50
smtp_connect_backlog = 40
smtp_accept_max_per_host = 10
smtp_accept_queue = 22
smtp_accept_queue_per_connection = 10
recipients_max = 16
recipients_max_reject = true
message_size_limit = 16M
accept_8bitmime
# Игнорируем сообщения, которые приходят нам же, давность которых более 12-ти часов
ignore_bounce_errors_after = 12h
# Удаляем замороженные сообщения, давность которых больше недели.
timeout_frozen_after = 7d
# Настройки TLS
tls_certificate = CERTDIR/mailed.crt
tls_privatekey = CERTDIR/mailed.key
tls_advertise_hosts = *
tls_verify_certificates = *
Размещено на Allbest.ru
Подобные документы
Спецификация организации службы Short Message Service. Алгоритм работы сервера и возможность расширения функциональных возможностей. Реализация проекта на языке высокого уровня С++ на платформе Linux. Расчет себестоимости и цены программного продукта.
дипломная работа [168,6 K], добавлен 19.01.2014Организация корпоративного файлового сервера, выполняющего функции прокси-сервера на базе ОС Linux. Процесс его реализации. Выбор оптимальной аппаратно-программной платформы. Расчёт сметы затрат на выполнение объёма работ по созданию FTP-сервера.
дипломная работа [2,0 M], добавлен 06.07.2012Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Разработка программно-аппаратного модуля, предназначающегося для сбора и анализа собранных данных в беспроводной сенсорной сети. Изготовление макета устройства. Внесение собираемых данных в базу. Расположение протокола MQTT в модели OSI приложения.
дипломная работа [3,9 M], добавлен 18.11.2017Требования, предъявленные к полноценному локальному чату. Протокол передачи данных TCP. Описание программы сервера. Этапы разработки программного продукта. Функция приема сообщений от сервера. Принятие и отправка сообщений всем пользователям чата.
курсовая работа [447,0 K], добавлен 21.01.2016Компоновка и конфигурирование Linux сервера. Общая информация об ALT Linux Server 5, его подвиды и основные функциональные возможности. Установка дистрибутива ALT Linux 5.0 "Ковчег" и Apache2+php+MySQL. Пример настройки работы сайта на web-сервере.
курсовая работа [6,0 M], добавлен 24.10.2012Исследование IT-структуры Егорьевского филиала МГГУ им. М.А. Шолохова и определение концепций организации сервера. Выбор и обоснование оптимальной аппаратно-программной платформы. Экономическое обоснование эффективности данного программного обеспечения.
дипломная работа [1,6 M], добавлен 28.06.2010Установка и настройка локального web–сервера и его компонентов. Конфигурационные файлы сервера Apache и их натройка. Настройка PHP, MySQL и Sendmail. Проверка работоспособности виртуальных серверов. Создание виртуальных хостов. Тест Server Side Includes.
учебное пособие [6,2 M], добавлен 27.04.2009История и основные сведения о сервере. Классификация и ресурсы серверов. Важность системы охлаждения для сервера. Выбор компонентов для сборки сервера. Основные неисправности и способы их устранения. Проведение технического обслуживания и ремонта сервера.
дипломная работа [2,1 M], добавлен 24.06.2015Разработка программы обработки изображений, позволяющей прорисовывать типовые геометрические фигуры. Выбор аппаратных и технических средств для реализации программного продукта. Организация входных и выходных данных. Блок-схема и листинг программы.
курсовая работа [2,4 M], добавлен 18.06.2014