Translate

пʼятниця, 28 березня 2014 р.

Mailserver with Postfix and Dovecot on Debian 7

Мабуть у вас колись виникало бажання створити свій власний мейл-сервер із купую можливостей та гарним доменним іменем. Тому, можливо, ця стаття - для вас.
Буде встановлено та налаштовано:

Postfix - агент передачі пошти (MTA - mail transfer agent), відправляє та доставляє електронні листи. SMTP-сервер.

Dovecot - агент доставки пошти (MDA - mail delivery agent),  реалізує доступ до пошти. IMAP і POP3-сервер.

SpamAssassin - спам-фільтр, написаний на Perl. Працює із Postfix за допомогою демону spamass-milter.

ClamAV - антивірус. Підключається до SMTP-сервера через clamav-milter. Сканер листів на віруси.

Graylist - базовий спам-фільтр. Спосіб автоматичного блокування спаму, заснований на тому, що «поведінка» програмного забезпечення, призначеного для розсилки спаму, відрізняється від поведінки звичайних серверів електронної пошти. Якщо поштовий сервер одержувача відмовляється прийняти лист і повідомляє про «тимчасової помилку», сервер відправника зобов'язаний пізніше повторити спробу. Спамерське програмне забезпечення в таких випадках, зазвичай, не намагається цього робити.

AlterMIME - невелика програма, яка використовується для зміни mime-частин поштових вкладень (може додавати описи, видаляти при певних умовах вкладення чи їх заміняти). За допомогою AlterMIME ми будемо додавати до листів автоматичний підпис.

Vacation - скрипт для управліннями попередженнями щодо відпустки/відсутності на роботі. Його робота, установка попереджень про відсутність на робочому місці чи редагування повідомлення, буде керуватись через Postfix Admin.

Sieve/ManageSieve - мова опису правил фільтрації пошти, Sieve працює на стороні сервера і розкладає пошту в залежності від логіки, що задає користувач.

Postfix Admin - веб-панель адміністрування поштових скриньок.

RoundCube + plugins - поштовий веб-клієнт зі зручним інтерфейсом та деякі плагіни для нього.

вівторок, 11 березня 2014 р.

Nagios 4 compile from sources (Debian Wheezy + Nginx)

Nagios - програма моніторингу комп'ютерних систем і мереж з відкритим вихідним кодом. Призначена для спостереження, контролю стану обчислювальних вузлів і служб, сповіщає адміністратора в тому випадку, якщо якісь із служб припиняють (або відновлюють) свою роботу. 
Nagios спочатку була створена під ім'ям Netsaint, розроблена Етаном Галстадом (англ. Ethan Galstad). Він же підтримує і розвиває систему сьогодні, спільно з командою розробників, які займаються як офіційними, так і неофіційними плагінами. Nagios має також і комерційний варіант Nagios XI із досить кругленькою вартістю.

Я якось писав про установку Nagios із репозиторіїв, проте час йде, а номер версії, що знаходиться в репозиторіях особливо не змінилась. Тому будемо встановлювати все із сирців, що завантажимо із сайту моніторингової системи. Спочатку розберемось із термінологією:

Nagios Core - дистрибутив моніторингової системи, тобто його безкоштовний варіант.

Nagios Plugins - плагіни для перевірки хостів, офіційний пакет доповнень (~60 штук); скрипти, що власне і слідкуватимуть за станом системи. 

Nagios Remote Plugin Executor (NRPE) - програма, що надає можливість перевіряти віддалені хости. На сервері, що буде перевірятись має бути встановлено NRPE-сервер, що буде очікувати запити від NRPE-клієнта, котрий зазвичай знаходиться на хості з інсталяцією Nagios.

Для компіляції Nagios із сорців спершу необхідно встановити додаткові пакети:

# apt-get install libperl-dev libpng12-dev libgd2-xpm-dev build-essential php5-gd wget libgd2-xpm libssl-dev

Та додати користувача/групу від імені яких буде запускатись Nagios:

# adduser --system --no-create-home --disabled-login --group nagios
# groupadd nagcmd
# usermod -G nagcmd nagios
# usermod -a -G nagcmd www-data

пʼятниця, 21 лютого 2014 р.

Налаштування централізованого логування із LogAnalyzer та Rsyslog

У цій статті я опишу установку та налаштування переглядача логів LogAnalyzer, Rsyslog-клієнта, який відсилатиме всі логи на віддалений Rsyslog-сервер, котрий в свою чергу буде писати їх в базу MySQL.

LogAnalyzer - веб-переглядач логів, що збирає системний демон rsyslog/syslog-ng, тобто виступає зручним фронендом.

У якості ОС я обрав Ubuntu 12.04. Адреси серверів:

192.168.1.51 (loganalyzer-mysql.ip) - rsyslog-сервер, на цьому ж хосту також буде проінстальовано LogAnalyzer

192.168.1.50 (loganalyzer-mongo.ip) - rsyslog-клієнт, що відсилатиме логи на хост  loganalyzer-mysql.ip

Налаштовуємо серверну частину, для чого додамо репозиторій від розробника Rsyslog:

# vim /etc/apt/sources.list
...
# Adiscon stable repository
deb http://ubuntu.adiscon.com/v7-stable precise/
deb-src http://ubuntu.adiscon.com/v7-stable precise/
...

# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com AEF0CF8E
# gpg --export --armor AEF0CF8E | sudo apt-key add -

Звісно, що можна скористатись версією Rsyslog, що доступна в стандартних репозиторіях, проте в мене була наявна проблема із відкриттям 514 TCP-порту від користувача syslog.

Оновлюємо пакети та встановлюємо Rsyslog із певними додатковими пакетами, котрі надалі будуть необхідні:

# apt-get install rsyslog rsyslog-mysql mysql-server mysql-client

неділя, 9 лютого 2014 р.

OpenVZ Web Panel

Зовсім нещодавно я писав про OpenVZ віртуалізацію. І не те щоб мені було дуже потрібно, проте я випадково наткнувся на досить симпатичну веб-панель для управління контейнерами і вирішив її спробувати. Тож поділюсь рецептом налаштування OpenVZ Web Panel.

OpenVZ Web Panel - досить непоганий варіант управління OpenVZ-контейнерами, адже з ним відпадає потреба кожен раз логінитись по ssh задля створення нового контейнеру чи зміни параметрів існуючого. У OpenVZ Web Panel також є можливість клонувати чи бекапити діючу віртуальну машину в пару кліків, тобто управління сервером стає справді зручним і швидким.

Налаштування буде описано для дистрибутиву CentOS 6.5. Припустимо звісно, що сама віртуалізація вже налаштована і працює правильним чином. Тож самий час установити необхідні програмні пакети:

# yum install ruby-devel sqlite sqlite-devel ruby-rdoc
# yum install make gcc
# yum install lsb_release
# gem install sqlite3-ruby

Скачуємо і запускаємо скрипт інсталяції:

# wget -O - http://ovz-web-panel.googlecode.com/svn/installer/ai.sh | sh

неділя, 2 лютого 2014 р.

Віртуалізація з OpenVZ

Віртуалізація дуже актуальна тема, адже дозволяє більш раціонально використовувати ресурси серверу. Дещо раніше я писав про віртуалізацію на базі KVM, що власне є технологією повної віртуалізації, на відміну від OpenVZ, про яку і піде далі мова.

OpenVZ — це реалізація технології віртуалізації на рівні операційної системи, яка базується на ядрі Linux. OpenVZ дозволяє на одному фізичному сервері запускати безліч ізольованих копій операційної системи, так званих контейнерів (Virtual Environments, VE).

Оскільки OpenVZ базується на ядрі Linux, в ролі «гостьових» систем можуть виступати тільки дистрибутиви GNU/Linux. Проте віртуалізація на рівні операційної системи у OpenVZ дає також і певні переваги, а саме: зручність у адмініструванні, щільніше розміщення віртуальних контейнерів в хост-системі (що зазвичай позитивно відображено на вартості VPS-хостингу), і дещо кращу продуктивність в порівнянні з технологіями повної віртуалізації.

Звісно, що і недоліків достатньо. Головний із них, що на відміну від KVM, модулі OpenVZ не входять у ванільне ядро, тому для фунціонування останнього необхідне окреме ядро і версія його далеко не остання. На момент публікації цієї статті, остальна стабільна версія - 2.6.32-042stab084.14. Із цього по-суті випливає, що хост-системою на OpenVZ може виступати не кожен дистрибутив, а лише з ядром біля 2.6.32 версії. Тому скажімо OpenVZ-ядро під Ubuntu 12.04 LTS навряд заведеться (що я вже спробував), адже ядро тут версії 3.8.0. Але не все так погано, адже для RedHat 6 (CentOS 6, Scientific Linux 6) та Debian 7 "Wheezy" все просто інсталюється і ці дистрибутиви офіційно підтримуюються Parallels.

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

Теорія без практики – мертва, тож самий час описати установку і налаштування хост-системи для OpenVZ. У якості хост-системи я обрав CentOS 6.5 (необхідно лиш попередньо не забути перевірити наявність правил iptables). Додаємо репозиторії для установки ядра OpenVZ та утиліт для роботи із контейнерами:

# wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo
# rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ

неділя, 19 січня 2014 р.

Speedtest from shell console

Існують різні способи для перевірки швидкості інтернет з'єднання і мабуть найбільш популярний - це speedtest.net. Проте для цього необхідний браузер із підтримкою adobe flash і середовище в котрому він власне зможе запускатись. Тому у якості альтернативи раджу спробувати speedtest-cli, консольну програму, що виконує абсолютно ті ж функції.

Установку speedtest-cli можна виконати декількома способами: наприклад через pip чи easy_install. Тому спершу встановимо python-pip:

# apt-get install python-pip

Та після скачаємо і установимо speedtest-cli:

# pip install speedtest-cli

Все готово для нашої початкової цілі, тому запускаємо:

$ speedtest
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Domashnya Merezha LLC (79.28.193.171)...
Selecting best server based on ping...
Hosted by LLC"Astelit" (Kiev) [2.52 km]: 10.649 ms
Testing download speed........................................
Download: 73.08 Mbit/s
Testing upload speed..................................................
Upload: 90.80 Mbit/s

неділя, 12 січня 2014 р.

Monitoring SNMP device with Cacti (setup and configuration)

Cacti - опенсорс моніторингова система, написана як фронтенд до утиліт RRDtool (RRD, Round-robin Database, кільцева база даних). RRDtool включають в себе можливість графічного відображення інформації, що зберігається; це може бути зміна в часі завантаження процесора, завантаження мережевого інтерфейсу і тд. 

Cacti є зручним інструментом для задання параметрів побудови графіків за допомогою RRDtool, а також має багато готових темплейтів для відображення звичних даних на кшталт використання ресурсів системи.

У статті я спробую описати його установку та конфігурацію.

Встановлюється все досить просто:

# apt-get update
# apt-get install snmpd cacti cacti-spine

Демон snmpd необхідно установити на всіх машинах, що будуть моніторитись.

Установщик запропонує обрати вебсервер з котрим буде працювати Cacti (Apache чи Lighttpd) та деякі інші питання, з якими необхідно погодитись. У якості веб-сервера я використав Apache.