Архив / my projects

RSS-канал этого раздела

Типы и характеристика грунта для расчета фундамента

Скальные грунты. Это самое надежное основание под фундамент. Представляют собой плотные горные породы, выходящие прямо на поверхность или покрытые тонким слоем почвы. Это гранит, базальт, диабаз, известняк, доломит, песчаник. Данные грунты не деформируются под нагрузкой, не размокают в воде и не промерзают зимой. На скальном грунте фундамент закладывают без заглубления, прямо на поверхности.

Полускальные грунты. Это те же горные породы, но раздробленные, с большим числом трещин. Они под нагрузкой не сжимаются, в воде не размокают, но во влажном состоянии способны промерзать. Надежное основание под фундамент, но при строительстве дома фундамент лучше заглубить в грунт на 0.5 м независимо от промерзания грунта. Читать дальше →

Требования к строениям по СНиП (выборка для коттеджей)

Примерные конструктивныехарактеристики зданий в зависимости от их степени огнестойкости

Степень огнестойкости

Конструктивные характеристики

I

Здания с несущими и ограждающими конструкциями из естественных или искусственных каменных материалов, бетона или железобетона с применением листовых и плитных негорючих материалов

II

То же. В покрытиях зданий допускается применять незащищенные стальные конструкции

III

Здания с несущими и ограждающими конструкциями из естественных или искусственных каменных материалов, бетона или железобетона. Для перекрытий допускается использование деревянных конструкций, защищенных штукатуркой или трудногорючими листовыми, а также плитными материалами. К элементам покрытий не предъявляются требования по пределам огнестойкости и пределам распространения огня, при этом элементы чердачного покрытия из древесины подвергаются огнезащитной обработке

IIIа

Здания преимущественно с каркасной конструктивной схемой. Элементы каркаса — из стальных незащищенных конструкций. Ограждающие конструкции — из стальных профилированных листов или других негорючих листовых материалов с трудногорючим утеплителем

IIIб

Здания преимущественно одноэтажные с каркасной конструктивной схемой. Элементы каркаса — из цельной или клееной древесины, подвергнутой огнезащитной обработке, обеспечивающей требуемый предел распространения огня. Ограждающие конструкции — из панелей или поэлементной сборки, выполненные с применением древесины или материалов на ее основе. Древесина и другие горючие материалы ограждающих конструкций должны быть подвергнуты огнезащитной обработке или защищены от воздействия огня и высоких температур таким образом, чтобы обеспечить требуемый предел распространения огня.

IV

Здания с несущими и ограждающими конструкциями из цельной или клееной древесины и других горючих или трудногорючих материалов, защищенных от воздействия огня и высоких температур штукатуркой или другими листовыми или плитными материалами. К элементам покрытий не предъявляются требования по пределам огнестойкости и пределам распространения огня, при этом элементы чердачного покрытия из древесины подвергаются огнезащитной обработке

IVа

Здания преимущественно одноэтажные с каркасной конструктивной схемой. Элементы каркаса — из стальных незащищенных конструкций. Ограждающие конструкции — из стальных профилированных листов или других негорючих материалов с горючим утеплителем

V

Здания, к несущим и ограждающим конструкциям которых не предъявляются требования по пределам огнестойкости и пределам распространения огня

Примечание. Строительные конструкциизданий, приведенные в настоящем приложении, должны отвечать требованиям табл. 1 идругим нормам настоящего СНиП. Читать дальше →

Советы планирующим строительство от тех, кто уже строил

Статья постоянно пополняется. Сделайте закладку.

Буду благодарен (и не только я) за советы, оставленные вами в комментариях.

Стройматериалы страйтесть разместить их так, чтобы те, которые потребуються раньше, были легко доступны. И так, чтобы было как можно меньше не нужных перемещений.

Заливая фундамент из миксеров, обязательно подготовьте емкость или яму, куда сольёте остатки. Можно для чего-нибудь использовать (те же дорожки, скульптурки…:)).

Если будет межэтажная лестница, сразу вычитывайте высоту потолков, исходя из того, какой высоты и какое количество хотите ступеней.  Читать дальше →

Отопление частного жилого дома — примерный расчет для различных систем отопления

Примерные расчеты 1 (можно ли верить?):

Сравнение стоимости при использовании различных типов обогрева для отопления частного дома в 100 кв. м. и высотой потолка 2.7 метра

Здесь приводится ПРИБЛИЗИТЕЛЬНЫЙ расчет затрат на отопление дома с площадью 100 кв.м при использовании различных видов топлива (электричества, солярки, природного газа, угля, дров, сжиженного газа) и системы инфракрасного отопления Heat Plus. Если Ваш дом имеет другую отапливаемую площадь, то Вам надо просто подставить в предлагаемую формулу вместо цифры «100» Вашу площадь.

При сравнении затрат будем исходить из одинаковых условий: котел находится в работе примерно половину общего времени, а отопительный сезон длиться 7 месяцев.  Читать дальше →

Удельный вес строительных материалов

Удельный вес материалов — чертовски полезная информация для тех, кто работает головой и руками. От покупки стройматериалов (сколько войдет в грузовик) до расчета фундамента и несущей способности стен — удельный вес -первое, что необходимо учитывать. Просто перемножаем объем на удельный вес и получаем реальный: объем в м* удельный вес = вреальный вес в кг.  Читать дальше →

Mail server в Ubuntu

http://blog.laptev.info/2009/ubuntu-mail-server-1.html

Я постараюсь подробно описать, как я настраивал mail server, чтобы обеспечить поддержку нескольких доменов, доступ по IMAP и POP3, защищеное соединение, веб-доступ к почте и многое другое. Это будет полезно новичкам в этом деле, да и мне самому, если потребуется повторить процесс…

 

1. ИМЯ ХОСТА И RDNS

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

Для примера, я буду использовать названия доменов domen1.com и domen2.ru. Оба этих домена должны быть зарегистрированы и иметь соответствующие ДНС записи (в частности MX записи, необходимые для корректного функционирования почтового сервера)

Проверим имя хоста:

1.hostname -f

Если оно отличается от доменного имени вашего будущего сервера — требуется его поменять.

Для этого отредактируем два файла:

1.sudo nano /etc/hostname

Замените существующее имя на mail.domen1.com.

И второй файл:

1.sudo nano /etc/hosts

Так же убедитесь, что старое название хоста изменено на новое.

После изменения названия хоста — перегрузите вашу систему.

Теперь снова проверим имя хоста:

1.hostname -f

На экран выводится:

1.mail.domen1.com

Замечательно. Первый шаг выполнен.

Теперь нужно проверить RDNS (reverse DNS). У разных провайдеров это настраивается по разному, в зависимости от особенностей реализации панели управления.

Вы должны прописать соответствие вашего внешнего IP-адреса имени почтового сервера, например mail.domen1.com — 231.123.134.12

Проверить настройки RDNS просто. Установите пакет dnsutils.

1.sudo aptitude install dnsutils

После установки, выполните проверку:

1.dig -x 231.123.134.12

Если вывод имеет такие строки,

1.dig -x 231.123.134.12
2....
3....
4.;; QUESTION SECTION:
5.;231.123.134.12.in-addr.arpa.     IN      PTR
6.;; ANSWER SECTION:
7.231.123.134.12.in-addr.arpa. 3477 IN      PTR     mail.domen1.com.

то все нормально. Можем продолжать.

2. НАСТРОЙКА МЕСТА ФИЗИЧЕСКОГО РАСПОЛОЖЕНИЯ ПОЧТЫ НА СЕРВЕРЕ

Самый простой способ настроить место для хранения почты — создать пользователя vmail с соответствующей группой и назначить ему специфичный userID.

Конечно, в будущем мы настроим MySQL для обеспечения работы сервера с многочисленными пользователями и доменами, но почта не будет храниться в базе данных. База будет использоваться только для поиска соответствующих пользователей и определения деталей доставки почты.

Пользователь vmail создается как обычно, но с некоторым отличием: мы указываем, что пользователь не может логиниться в систему.

Для начала создадим группу vmail:

1.sudo groupadd -g 5000 vmail

Это команда создает группу vmail и присваивает ее GID (group ID) 5000.

Затем создаем пользователя vmail:

1.sudo useradd -s /usr/sbin/nologin -g vmail -u 5000 vmail -d /home/vmail -m

Эта команда создает пользователя vmail, чтобы он не мог логиниться в систему, присваивает его группе vmail, а так же создает ему домашнюю директорию /home/vmail

3. УСТАНОВКА СЕРВЕРА POSTFIX И MYSQL

Выполните команду:

1.sudo aptitude install postfix postfix-mysql mysql-server postfix-tls libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl telnet mailx

Эта команда дополнительно к Postfix и MySQL установит пакеты mailx и telnet, которые будут очень удобны в процессе тестирования настроек.

В процессе установки MySQL сервера потребуется установить (и подтвердить) пароль для администратора (пользователь root).

В процессе установки Postfix сервера вначале система выведет на экран окно с информацией, после чего потребуется выбрать пункт ‘Internet Site’.

postfix1

На следующем окне

postfix2

введите имя вашего почтового домена mail.domen1.com.

Можно протестировать установку почтового сервера. Для этого отправим себе с него постовое сообщение.

Выполните команду:

1.mail address@example.com

address@example.com должен быть реальным действующим адресом, который вы можете проверить на предмет новой почты.

После нажатия на клавишу ввода потребуется ввести тему сообщения. После следующего нажатия — текст письма. Тест письма любой, можно сколько угодно пользоваться клавишей ввода. Признаком окончания тела письма является символ точки с начала новой строки, с последующим нажатием на клавишу ввод.

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

1.mail adress@example.com
2.Subject: test email from domen1.com
3.Это, собственно
4.письмо
5.с уважением,
6.Я
7..
8.Cc:

Удобная штучка для отсылки писем в терминале, да? Рекомендую! Это пакет mailx, который мы установили чуть ранее.

Проверяйте ящик adress@example.com. Пришло письмо? Замечательно! Можем двигаться дальше.

4. НАСТРОЙКА БАЗЫ ДАННЫХ MYSQL

Далее будет много текстового ввода в терминале — не пугаемся. Всегда можно воспользоваться копированием через буфер обмена ;)

Для начала создадим базу данных с оригинальным названием — mail.

1.mysqladmin -u root -p create mail

В процессе выполнения команды система вас попросит ввести пароль администратора MySQL (вы его ввели при инсталляции MySQL).

Далее залогинимся в MySQL и создадим несколько таблиц.

1.mysql -u root -p

Для начала создадим пользователя БД, для наших целей…

1.CREATE USER 'mailadmin'@'localhost' IDENTIFIED BY'MyPasswordHere';

Замените MyPasswordHere на свой собственный пароль.

Далее, дадим этому пользователю необходимые привелегии: SELECT, INSERT, UPDATE, DELETE.

1.FLUSH PRIVILEGES;
2.GRANT SELECTINSERTUPDATEDELETE ON `mail` . * TO'mailadmin'@'localhost';
3.FLUSH PRIVILEGES;

Теперь мы можем выбрать нашу БД mail и создать необходимые таблицы.

1.USE mail;

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

Таблица доменов. В Mysql введите следующие команды:

1.CREATE TABLE domains (
2.domain varchar(50) NOT NULL,
3.PRIMARY KEY (domain)
4.)
5.TYPE=MyISAM;

Не забываем вводить точку с запятой (;) в конце команды SQL, иначе она не будет выполнена.

Таблица пользователей. Как раньше, введите в MySQL:

1.CREATE TABLE users (
2.email varchar(80) NOT NULL,
3.password varchar(20) NOT NULL,
4.PRIMARY KEY (email)
5.)
6.TYPE=MyISAM;

Таблица форвардинга:

1.CREATE TABLE forwards (
2.source varchar(80) NOT NULL,
3.destination TEXT NOT NULL,
4.PRIMARY KEY (source)
5.)
6.TYPE=MyISAM;

Теперь можно выйти из MySQL:

Вы вернулись обратно в командную строку терминала.

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

5. НАСТРОЙКА POSTFIX ДЛЯ ИСПОЛЬЗОВАНИЯ БАЗЫ ДАННЫХ MYSQL

Для того, чтобы Postfix мог использовать таблицы MySQL, необходимо создать несколько настроечных файлов.

Каждый из этих файлов достаточно прост: он содержит название БД, имя, пароль, SQL-запрос и название хоста. Эти файлы подсказывают Postfix-у, как выбирать данные из созданных нами ранее таблиц.

Домены.

Создадим текстовый файл:

1.sudo nano /etc/postfix/mysql-domains.cf

Введем следующие строки:

1.user = mailadmin
2.password = MyPasswordHere
3.dbname = mail
4.query = SELECT domain AS virtual FROM domains WHERE domain='%s'
5.hosts = 127.0.0.1

Помним: MyPasswordHere надо заменить на введенный при создании пользователя БД mailadmin пароль.

Форвардинг.

Создаем файл:

1.sudo nano /etc/postfix/mysql-forwards.cf

Заполняем его:

1.user = mailadmin
2.password = MyPasswordHere
3.dbname = mail
4.query = SELECT destination FROM forwards WHERE source='%s'
5.hosts = 127.0.0.1

Почтовые ящики.

Каждый домен имеет множество различных почтовых ящиков. Этот скрипт получает правильные характеристики почтового ящика.

1.sudo nano /etc/postfix/mysql-mailboxes.cf

Содержимое:

1.user = mailadmin
2.password = MyPasswordHere
3.dbname = mail
4.query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
5.hosts = 127.0.0.1

E-Mail адреса.

И наконец создадим файл адресов.

1.sudo nano /etc/postfix/mysql-email.cf

Содержимое:

 

1.user = mailadmin
2.password = MyPasswordHere
3.dbname = mail
4.query = SELECT email FROM users WHERE email='%s'
5.hosts = 127.0.0.1

с файлами все.

Эти четыре файла позволят Postfix-у получить доступ к информации в базе данных mail и присвоить корректные данные каждому письму.

Полномочия на файлы

Да, чуть не забыл. Необходимо еще установить правильный доступ к этим файлам:

1.sudo chmod o= /etc/postfix/mysql-*

(другие группы не имеют доступа к файлам.

И сменим владельца:

1.sudo chgrp postfix /etc/postfix/mysql-*

Postfix должен иметь к ним доступ.

Настройки Postfix

Отредактируем файл настроек Postfix:

1.sudo nano /etc/postfix/main.cf

Обычно нижняя часть файла выглядит так:

01.myhostname = mail.domen1.com
02.alias_maps = hash:/etc/aliases
03.alias_database = hash:/etc/aliases
04.myorigin = /etc/mailname
05.mydestination =
06.relayhost =
07.mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
08.mailbox_size_limit = 0
09.recipient_delimiter = +
10.inet_interfaces = all

Убедитесь, что mydestination не сделано присвоение.

Добавим ссылки на созданные файлы настроек, чтобы Postfix использовал их в процессе работы. В конец файла добавьте строки:

1.virtual_alias_domains =
2.virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-forwards.cf, mysql:/etc/postfix/mysql-email.cf
3.virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-domains.cf
4.virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-mailboxes.cf
5.virtual_mailbox_base = /home/vmail
6.virtual_uid_maps = static:5000
7.virtual_gid_maps = static:5000
8.proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps

6. БЕЗОПАСНОЕ СОЕДИНЕНИЕ — НАСТРАИВАЕМ SASLAUTHD

Saslauthd требуется для того, чтобы устанавливать безопасные соединения с вашим почтовым сервером.

Saslauthd

Посмотрим основной файл настроек программы:

1.sudo nano /etc/default/saslauthd

Первым делом надо установить автоматический запуск демона (поменяйте значение на ‘yes’. По умолчанию стоит ‘no’):

1.# Should saslauthd run automatically on startup? (default: no)
2.START=yes

Далее нужно изменить некоторые опции в конце файла. По умолчанию они выглядят так:

1.#
2.# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
3.OPTIONS="-c -m /var/run/saslauthd"

Изменим их следующим образом (мы же запускаем Postfix):

1.#
2.# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
3.OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Кстати…Мы только что указали каталог, который не существует в природе. Непорядок. Устраним это:

1.sudo mkdir -p /var/spool/postfix/var/run/saslauthd

MySQL

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

1.sudo nano /etc/pam.d/smtp

Добавим в этот файл следующий текст:

1.auth    required   pam_mysql.so user=mailadminpasswd=MyPasswordHere host=127.0.0.1 db=mail table=usersusercolumn=email passwdcolumn=password crypt=1
2.account sufficient pam_mysql.so user=mailadminpasswd=MyPasswordHere host=127.0.0.1 db=mail table=usersusercolumn=email passwdcolumn=password crypt=1

Это позволит процессу авторизации иметь доступ к БД для проверки пароля и e-mail-а.

И второй файл:

1.sudo nano /etc/postfix/sasl/smtpd.conf

Его содержимое следующее:

01.pwcheck_method: saslauthd
02.mech_list: plain login
03.allow_plaintext: true
04.auxprop_plugin: mysql
05.sql_hostnames: 127.0.0.1
06.sql_user: mailadmin
07.sql_passwd: MyPasswordHere
08.sql_database: mail
09.sql_select: select password from users where email = '%u'

По моему, тут ничего особо не надо пояснять, текст говорит сам за себя.

Для того, чтобы Postfix мог получить доступ к процессу Saslauthd, добавим пользователя Postfix в группу Saslauthd (Это же Лииинукс!!!) ;) ).

1.sudo adduser postfix sasl

Поменяли кучу настроек. Время перезапустить демоны:

1.sudo /etc/init.d/postfix restart
2.sudo /etc/init.d/saslauthd restart

Создаем SSL-сертификат

Создадим сертификат безопасности. По умолчанию он будет создан в каталоге /etc/ssl/certs.

1.sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/certs/mailcert.pem

В процессе создания, вам зададут несколько вопросов. Ответить можно, например так:

1.Country Name - RU
2.State or Province -
3.Locality name - Moscow
4.Organisation Name - MyGreat Company
5.Organisational Unit Name - Mail
6.Hostname - mail.domen1.com
7.Email address - admin@domen1.com

Важно, чтобы Hostname совпадал с именем mail server-а — hostname. В нашем случае, это mail.domen1.com.
Мы создали самоподписанный сертификат здесь:

1./etc/ssl/certs/mailcert.pem

Настраиваем Postfix

Теперь требуется отредактировать главный файл настроек Postfix:

1.sudo nano /etc/postfix/main.cf

Найдите секцию TLS parameters. Настройки по умолчанию в ней выглядят так:

1.smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
2.smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
3.smtpd_use_tls=yes
4.smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
5.smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Стираем их полностью. И вставляем вместо них следующие:

1.smtpd_sasl_auth_enable = yes
2.broken_sasl_auth_clients = yes
3.smtpd_sasl_authenticated_header = yes
4.smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
5.smtpd_use_tls = yes
6.smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem
7.smtpd_tls_key_file = $smtpd_tls_cert_file

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

7. УСТАНАВЛИВАЕМ COURIER

Courier позволит нам получить POP3 и IMAP доступ к нашей почте.

Установка Courier

Установка достаточна проста, с использованием aptitude:

1.sudo aptitude install courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl

Во время установки вам будет задан вопрос, нужно ли создать директории. Правильный ответ — НЕТ (это ответ по умолчанию, так что можете просто нажать клавишу ввода)!

Настройка Courier

Для начала отредактируем файл:

1.sudo nano /etc/courier/authdaemonrc

Поменяйте строку

1.authmodulelist="authpam"

на

1.authmodulelist="authmysql"

Понятно для чего, да? Мы же используем MySQL!

Далее редактируем файл с деталями БД:

1.sudo nano /etc/courier/authmysqlrc

Чтобы не заморачиваться — удалите в нем все содержимое, и вставьте следующее:

01.MYSQL_SERVER localhost
02.MYSQL_USERNAME mailadmin
03.MYSQL_PASSWORD MyPasswordHere
04.MYSQL_PORT 0
05.MYSQL_DATABASE mail
06.MYSQL_USER_TABLE users
07.MYSQL_CRYPT_PWFIELD password
08.MYSQL_UID_FIELD 5000
09.MYSQL_GID_FIELD 5000
10.MYSQL_LOGIN_FIELD email
11.MYSQL_HOME_FIELD "/home/vmail"
12.MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')

Сохраните файл.
После изменения файлов настроек, требуется рестартовать демоны:

1.sudo /etc/init.d/courier-authdaemon restart
2.sudo /etc/init.d/courier-imap restart
3.sudo /etc/init.d/courier-imap-ssl restart
4.sudo /etc/init.d/courier-pop restart
5.sudo /etc/init.d/courier-pop-ssl restart

8. НАСТРАИВАЕМ FIREWALL

Не буду здесь описывать настройки файрволла. Они у всех разные… Я например, использую Shorewall, кто-то IPTables… Дело вкуса.
Нужно дать доступ по портам: 25 (SMTP), 110, 995 (POP, POPS), 143, 993 (IMAP, IMAPS).

9. ДОБАВЛЯЕМ ДОМЕНЫ И ПОЛЬЗОВАТЕЛЕЙ В ТАБЛИЦЫ БД

Нужно заполнить таблички в MySQL, чтобы все то, что мы настроили ранее заработало.

Логинимся в MySQL:

1.mysql -u root -p

Выбираем базу данных:

1.USE mail;

Заполняем таблицу доменов:

1.INSERT INTO `domains` (`domain`) VALUES ('domen1.com');

Чтобы ввести любой другой домен, выполните аналогичную команду:

1.INSERT INTO `domains` (`domain`) VALUES ('domen2.ru');

Заполняем таблицу пользователей:

1.INSERT INTO `users` (`email`, `password`) VALUES('admin@domen1.com', ENCRYPT('secretpassword'));

Остальные пользователи вводятся аналогично:

1.INSERT INTO `users` (`email`, `password`) VALUES('kot@domen2.ru', ENCRYPT('secretpassword'));

Когда все таблицы заполнены — выходим из ведения БД:

Перегружаем postfix:

1.sudo postfix reload

Проверим, работает или нет?
Давайте отправим почтовое сообщение по одному из введенных адресов: admin@domen1.com

1.mail admin@domen1.com

Введите тело и тему письма и отправьте его адресату. Через какое-то время проверьте папку /home/vmail:

1.ls /home/vmail

Увидите новый каталог:

1./home/vmail/domen1.com

А для каждого пользователя домена domen1.com в папке /home/vmail/domen1.com будет создан собственный каталог с письмами.

Почта уже работает. Остались небольшие дополнения, но о них в следующей статье. Так же в конце мы убедимся, что наш сервер не используется спамерами для несанкционированных рассылок — об этом еще одна статья
Спасибо за внимание.

При подготовке статьи использовались материалы сайта slicehost.com

Безопасное получение почты через UUCP и SSH

by Christophe Prevotaux
Перевод: Сгибнев Михаил

Когда я открывал новую фирму, мне пришлось несколько недель провести без ADSL, оптики или какого иного способа получения скоростного Интернет. Единственное, что оставалось использовать — это старый модем USR 33.6Kbps и учетная запись dial-up. Так как электронная почта была необходима как воздух, пришлось сеть и поискать решение проблемы.

У меня уже было зарегистрировано доменное имя, но провайдером dial-up назначался динамический IP адрес. Моя домашняя машина была подключена через HNS Direcway Satellite Link 128/2048Kbps и имела постоянный IP адрес. Естественным шагом было использовать ее в своих целях.

Когда-то давно, в прежней жизни, я настраивал системы UUCP, когда еще не было Интернета и протоола ppp. Припомнив былое, я посчитал, что UUCP может мне помочь.

UUCP это the Land Rover передачи данных. Это старейший протокол, живущий в Unix, Arpanet, Usenet, и Internet. Лично я использовал его на:

  • ISDN адаптерах
  • Радио связь
  • Спутниковая связь
  • Прямая линия
  • GSM
  • в сетях X.25
  • в сетях TCP/IP с различной физикой
  • VPN (IPSEC, PPTP, OPENVPN etc.)
  • и теперь, SSH

Как вы можете видеть — UUCP нечто вроде внедорожника и это вызывает определенное уважение, поскольку я не знаю ни одного протокола (кроме TCP/IP, естественно), который был бы так универсален и долговечен. ри поиске документации я наткнулся на статью, написанную в 2001 году, моим соотечественником, Фабианом Пансо на uucpssh.org. Фабиан описал работу UUCP поверх SSH, что мне, собственно и требовалось. В статье было очень много недостказанностей из-за того, что использовались старые версии Linux и SSH, а я работаю с FreeBSD, но все равно она мне очень помогла.

Несомненно, имеются другие пути решения проблемы, например перенаправление портов в SSH, но я решил пойти этим путем. Все замечания и дополнения приветствуются.

Преимущества решения UUCP поверх SSH

Протокол POP не обеспечивает эффективного способа работать с электронной почтой из нескольких мест, поэтому мне показалось, что UUCP поверх SSH предоставляем мобильным пользователям больше удобства.

Протокол UUCP является пакетным, поэтому вы можете не бояться потерь данных. В случае неудачного соединения возможна повторная передача почты с места обрыва. Я не знаю больше ни одного почтового протокола, способного на это, обычно передается сообщение полностью. UUCP не требует постоянного подключения к Интернет. Однако, есть один недостаток — вы не будете немедленно получать ответы и сообщения об ошибках, в лучшем случае, это произойдет при следующем сеансе связи.

Протокол UUCP может иметь широкий диапазон интервалов опроса наличия почты и может передавать файлы не только в почтовых вложениях, вы можете выбрать службу рассылки новостей в Usenet и/или создать ваши собственные конференции. Впрочем, мне нужна только электронная почта.

Вводная

Вот список необходимых нам вещей:

  1. Вы должны иметь привилегии root на двух FreeBSD системах. В этой статье описывается работа на FreeBSD 4.10, но будет работать и на FreeBSD 5.х, если UUCP установлен из дерева портов. Также это будет работать на NetBSD и OpenBSD с некоторыми модификациями.
  2. Соответственно, две системы, далее обозначаемые как «клиент» и «сервер»
  3. Сервер имеет статический IP адрес или этот вопрос улажен с помощью DynDNS FQDN. Скорость и время задержки в канале не имеет принципиального значения.
  4. Опрос протокола UUCP будет осуществляться от «клиента» к «серверу» а не наоборот. Было бы просто сделать обмен server-to-server в случае наличия постоянных IP адресов, но это не тема сегоднящней статьи.
  5. На машинах должен быть установлен OpenSSH installed и запущен sshd. На FreBSD это сделано по умолчанию.
  6. Я использую Postfix -> 2.1. Для определения своей версии выполните команду:
     postfconf | grep mail_version 

Сетевые настройки:

  • UUCP сервер «server» с адресом FQDN server.domain.tld и именем UUCP — server.
  • UUCP клиент «client» с адресом FQDN client.domain.tld и именем UUCP — client.
  • почтовое доменное имя машины «client» — hosted-domain.tld.
  • локальное доменное имя «client» — localdomain.local.

Настройка клиента

Установите Postfix на клиентской машине из коллекции портов /usr/ports/mail/postfix/. Отредактируйте /usr/local/etc/posftix/main.cf следующим образом:

 myhostname = machine.localdomain.local myorigin = $mydomain inet_interfaces = $myhostname, localhost mydestination = $myhostname, localhost.$mydomain, $mydomain local_recipient_maps = unix:passwd.byname $alias_maps mynetworks = $config_directory/mynetworks relay_domains = $config_directory/relay_domains transport_maps = hash:$config_directory/transport alias_maps = hash:$config_directory/aliases alias_database = hash:/etc/aliases 

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

Добавляем в /usr/local/etc/posftix/main.cf строку:

 disable_dns_lookups=yes 

Эта опция указывает Postfix не использовать DNS при посылке писем на сервер, так как в этом случае письма посылались бы по SMTP вместо UUCP.

Создаем файл /etc/postfix/transport, содержащий следующие строки:

 ################### this is POSTFIX 'transport' file ############################# # Every time this file is modified it need a 'postmap' and postfix needs a reload# ################################################################################## hosted-domain.tld : # this domain emails are delivered locally .hosted-domain.tld : # this domain emails are delivered locally # in case you need subdomains or machine routing * uucp:server # All other emails get transported by UUCP 

В этом файле мы указываем в качестве средства доставки протокол UUCP. Это означает, что вся почта, отправленная не в something@hosted-domain.tld или something@.hosted-domain.tld будет пересылаться через UUCP. Для доменов hosted-domain.tld и .hosted-domain.tld будет применяться локальная доставка.

Теперь уведомим Postfix о произведенных изменениях:

 $ postmap /usr/local/etc/postfix/transport && postfix reload 

Создаем файл /usr/local/etc/postfix/virtual, содержащий:

 #################### This is POSTFIX 'virtual' file ############################## # Every time this file is modified it need a 'postmap' and postfix needs a reload# ################################################################################## ########### hosted-domain.tld virtual users table ############## postmaster@hosted-domain.tld postmaster@localdomain.local virtualuser1@hosted-domain.tld localuser1@localdomain.local 

Теперь уведомим Postfix о произведенных изменениях:

 $ postmap /usr/local/etc/postfix/virtual && postfix reload 

Создаем /usr/local/etc/postfix/mynetworks, содержащий:

 #################### This is POSTFIX 'mynetworks' file ########################### # Every time this file is modified it need a 'postmap' and postfix needs a reload# ################################################################################## xxx.xxx.xxx.xxx/xx OK # where xxx.xxx.xxx.xxx is your local private IP address # and /xx is the mask for your networks for exple # 192.168.1.1/24 xxx.xxx.xxx.xxx OK # single host for exemple 192.168.2.1 127.0.0.0/8 OK # this is localhost interface(s) 

Это список IP адресов, которым доставка почты осуществляется через SMTP, перед тем как поставить письма в очередь на отправку почты через UUCP.

Возможно вы захотите изменить файл canonical, для того, чтобы изменять отправителя при отправке почты с локальной машины. Будет это выглядеть примерно так:

 #################" This is POSTFIX 'canonical' file ############################## # Every time this file is modified it need a 'postmap' and postfix needs a reload# ################################################################################## @localdomain.local @hosted-domain.tld 

Для вступления изменений в силу:

 $ postfix stop && postfix start 

В случае, если вы модифицируете псевдонимы(aliases), хорошей идеей будет выполнить команды newaliases и затемpostfix reload. Это также можно сделать, используя простейший скрипт:

 #! /bin/sh postmap virtual postmap transport postmap mynetworks postmap relays_domains postmap access postmap canonical newaliases postfix reload 

Используйте postcheck для проверки корректности конфигурации.

Конфигурирование клиента UUCP

Для настройки UUCP у клиента необходимо создать несколько файлов в каталоге /etc/uucp. Начнем мы с /etc/uucp/sys, содержащего:

 ###### this is the 'sys' file for Taylor UUCP ###### system server alias server-ssh call-login * call-password * time any address server.domain.tld port ssh protocol t remote-send /var/spool/uucppublic remote-receive /var/spool/uucppublic 

Затем создаем /etc/uucp/port:

 ###### this is the 'port' file for Taylor UUCP ###### port ssh type pipe command /usr/bin/ssh -x -o batchmode=yes server.domain.tld 

Теперь /etc/uucp/call:

 ###### this is the 'call' file for Taylor UUCP ###### server login password 

В заключение устанавливаем права доступа к файлам. SSH очень критичен в этих вопросах.

 % cd /var/spool/ && chmod go-w uucp % cd /etc/uucp && chown root:uucp * && chmod 550 * 

Конфигурирование SSH клиента

Пришло вермя конфигурирования клиента SSH. От пользователя root запускаем команду vipw uucp и редактируем домашний каталог пользователя с:

 uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico 

на

 uucp:*:66:66:UUCP pseudo-user:/var/spool/uucp:/usr/libexec/uucp/uucico 

Затем генерируем ключи для клиента:

 % su -m uucp $ export HOME=/var/spool/uucp $ cd /var/spool/uucp $ ssh-keygen -t dsa 

В последней команде вас попросят ввести кодовую фразу. Не делайте этого, просто нажмите Enter. Хотя это и походит на брешь в системе сетевой защиты, пользователь uucp не имеет пароля в /etc/passwd. Нам в дальнейшем потребуется файлid_dsa.pub

Настройка сервера

На сервере также требуется конфигурирование Postfix, UUCP и SSH.

Настройка сервера Postfix

Я считаю это само собой разумеющимся, что это — основной почтовый сервер, Вы уже знаете, как конфигурировать Postfix для получения и отправки почты из и в Интернет.

Postfix должен знать, что всю почту для клиента необходимо отправлять через UUCP. Поэтому в файле /usr/local/etc/postfix/transport должна быть строка:

 ####### this is POSTFIX 'transport' file ######### hosted-domain.tld uucp:client 

Postfix также должен осуществлять маршрутизацию почты для нашего домена, поэтому в /usr/local/etc/postfix/relay_domains указываем:

 ####### this is POSTFIX 'relay_domains file ######### hosted-domain.tld OK hosted-domain.tld OK 

Затем активируем изменения:

 % postmap transport relay_domains && postfix reload 

Настройка UUCP

Как и для клиента, используя vipw uucp сделайте изменения в /etc/password:

 uucp:*:66:66:UUCP pseudo-user:/var/spool/uucp:/usr/libexec/uucp/uucico 

на

 uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucp:/bin/sh 

Затем, создаем файл /etc/uucp/sys, содержащий:

 ###### this is the UUCP 'sys' file for Taylor UUCP ####### # client system client time any port tcp protocol t remote-send /var/spool/uucppublic remote-receive /var/spool/uucppublic # other clients use the same lines 

Создаем /etc/uucp/passwd:

 ###### this is the UUCP 'passwd' file for Taylor UUCP ####### yourlogin yourpassword 

Конфигурация SSH

В финале необходимо сконфигурировать SSH. Воспользуемся командой su -m uucp и создадим файл authorized_keys:

 $ touch /var/spool/uucp/.ssh/authorized_keys 

Скопируем содержимое клиентского файла id_dsa.pub(располагающегоса в /var/spool/uucp/.ssh/) в /var/spool/uucp/.ssh/authorized_keys на сервере. Установим права доступа:

 chmod go-rwx && chown uucp:uucp 

Затем редактируем authorized_keys, вставив в начало файла команду:

 command="/usr/libexec/uucp/uucico -l 

Таким образом, содержимое файла будет выглядеть примерно так:

 command="/usr/libexec/uucp/uucico -l" ssh-dss AAAAB3NzaC1kc3MAAACBA... 

Все это должно быть в одну строку. Затем заключительная команда:

 cd /var/spool/ && chmod go-w uucp. 

Заключительная наладка и тестирование

Финал. Зарегистрируем DSA ключ для клиентской машины в /var/spool/uucp/.ssh/known_hosts. Для этого необходимо переключиться в пользователя uucp (командой su -m uucp), выполнить команду ssh -v uucp@server.domain.tld и ответить «yes».

В этой точке вся входящая почта для hosted-domain.tld будет помещена в очередь и сохранена в каталоге var/spool/uucp/client. UUCP с удовольствием будет ее посылать, всякий раз создавая SSH туннель.

Если что то не работает, то проверьте порядок действий еще раз. На этом, собственно и все.

Проверим реальную работу.

Дозваниваемся до провайдера Интернет и выполняем:

 su -m uucp /usr/libexec/uucp/uucico -f -sserver 

Для наблюдения процесса доставки почты введем:

 uulog -f -sserver 

Для просмотра обработки почты Postfix воспользуйтесь командой:

 tail -f /var/lo/maillog 

Запускаем любимый почтовый клиент и отправляем почту. Вы должны будете увидеть ее в очереди UUCP (uustat -sserver) и отослана при следующем запуске uucico.

Вы можете использовать команду uustat -k <jobid> на сервере или клиенте для прекращения работы, которую можно просмотреть командой using uusat -s <system>:

 server.NI8whUuAALf1 server uucp 10-06 10:35 Executing rmail \ user@domain.tld (sending 1452 bytes) 

В этом примере необходимо будет ввести uustat -k system.NI8whUuAALf1 для удаления работы.

Для автоматизации работы воспользуемся услугами демона cron. Для предотвращения ошибок, необходимо иметь постоянное подключение к Интернет. Выполним команду crontab -u uucp -e и введем следующую команду для проверки почты каждые пять минут:

 # This is Taylor UUCP crontab file PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/libexec/uucp 0-55/5 * * * * /usr/libexec/uucp/uucico -f -sserver 

В заключение хочу сказать, что очень надеюсь, что этот пример помог вам и мне просто интересно, сколько людей в мире еще использует UUCP. Я буду рад получить от вас письмо, для того чтобы составить некую карту стран и пользователей.