10 полезных фишек для RSS в WordPress

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

RSS — это одна из тех технологий которая очень проста и в то же время просто незаменима. Сегодня RSS это де факто общепринятый стандарт для блогов, и используется повсеместно. Ну а так как большинство блогов в сети построено на WordPress, мы и рассмотрим все примеры применимо к данному движку. Некоторые фишки давно известны, но я уверен, что этот список поможет вам использовать свой RSS в WordPress намного эффективнее, и все это без использования плагинов!

Как и в других моих постах про WordPress хочется построить описание в виде «проблема-решение-описание». Это самый оптимальный вариант описания таких вещей. Потому что вы будете знать, не только как это делается, но и почему делается именно так, а при желании и под себя перестроить.

Пожалуй, будем приступать.

1. Настраиваем время появление поста в RSS ленте, вывод RSS с задержкой

Вывод RSS с задержкой

Проблема: Случалось ли у вас когда-нибудь такое, что вы опубликовали пост, и только потом заметили ошибку? Конечно, можно все исправить, но есть небольшая проблемка — пост уже попал в RSS-поток с ошибкой. Чтобы избежать таких проблем есть хороший рецепт – сделать задержку между публикацией поста на блоге и появлением его в RSS-ленте.

Решаем проблему: Чтобы решить эту проблему, нам необходимо вставить следующий код в файл function.php нашей темы:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function publish_later_on_feed($where) {
	global $wpdb;

	if ( is_feed() ) {
		// получаем текущее время
		$now = gmdate('Y-m-d H:i:s');

		// задержка
		$wait = '5'; // integer

		$device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR

		$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
	}
	return $where;
}

add_filter('posts_where', 'publish_later_on_feed');

Дополнение: В данном коде выставлена задержка между публикацией поста и обновлением RSS-потока в 5 минут. Для этого определена переменная $wait. Вы можете изменить значение по своему усмотрению.

2. Переадресация RSS фида WordPress на фид из FeedBurner

Проблема: Большинство блогеров-новичков обычно начинают пользоваться сервисом FeedBurner только после того, как увидят установленный счетчик подписчиков на других блогах и представляют как это полезно и круто. Они регистрируются, устанавливают счетчик, но существующие подписчики уже подписаны на стандартный WordPress RSS-фид. Да еще и некоторые новые посетители продолжают подписываться на него.

Проблема №2: Если вы часто меняете темы оформления блога, вам необходимо будет постоянно заботиться о том, чтобы заменить стандартную функцию bloginfo (’rss2_url’) на адрес вашего FeedBurner канала.

Решаем проблему: Решение обоих проблем совсем не сложное, мы будем использовать редирект на сервере.
Добавляем следующий код в файл .htaccess в корневой директории и сохраняем

# temp redirect wordpress content feeds to feedburner

 RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
 RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
 RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/alaev/TxUH [R=302,NC,L]

Дополнение: Не забудьте изменить адрес канала на свой. Теперь, когда кто-нибудь нажмет на ссылку вида http://www.yourblog.com/feed он будет перемещен на http://feeds.feedburner.com/yourblog. Теперь вы никогда не потеряете своих подписчиков. Даже если будете менять тему оформления по десять раз на дню, вам не придется снова и снова вручную менять адрес RSS-канала.

3. Вставляем рекламу, картинки (или еще что-нибудь) в RSS-канал

RSS лента с картинками или рекламой

Проблема: Монетизация RSS-ленты уже стала обыденной вещью, особенно за рубежом, и многие блогеры используют эту тактику для увеличения своих доходов. FeedBurner может вставить рекламу AdSense в ленту, но есть некоторые ограничения по подписчикам, чтобы иметь такую возможность. Да и вставить что-то другое кроме AdSense не получится, а это неудобно.

Решаем проблему: Всегда есть возможность вставить что угодно и куда угодно =) Вот, например, вы можете вставить ссылку на что-нибудь «вкусненькое» только для своих подписчиков.
Для этого требуется добавить следующую функцию в файл вашей темы functions.php

А вы уже прокомментировали мои фотографии?
'; return $content; } add_filter('the_excerpt_rss', 'insertAds'); add_filter('the_content_rss', 'insertAds'); ?>

Дополнение: Существует много различных способов добиться нужного результата, но они требуют вмешательства в код. Этот же способ использует только функцию add_filter () для вставки нужного элемента без необходимости править код движка.

4. Форматируем правильно изображения для RSS-ленты

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

Некрасивое отображение изображений в RSS

А ведь гораздо красивее было бы сделать так

Красивое форматирование изображений в RSS

Или так

Правильное отображение картинок в RSS

Проблема: Достаточно много времени все мы тратим на форматирование текста и изображений в записи на блоге. На самом блоге это может выглядеть хорошо, а вот как это будет выглядеть в RSS-ридере? Вы это проверяете? А стоит иногда это делать.

Решаем проблему: Чтобы разобраться с этой проблемой добавляем к изображению параметр style.

wp10rss_4_3

Дополнительно: padding:0 10px 5px 0; каждый из четырех параметров означает отступ начиная с верхнего заканчивая левым краем, по часовой стрелке. Следовательно в примере будет отступ для картинки 10px справа и 5px снизу.

5. Предоставьте вашим читателям RSS подписку на комментарии

RSS лента комментариев к посту

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

Решаем проблему: Решение тут совсем простое, никаких хаков не потребуется. Достаточно добавить функцию comment_rss_link () в вашу тему. Смотрим следующий код:

6. Исключаем определенные категории из RSS-ленты

Проблема: Есть ли у вас на блоге категория или даже несколько категорий, которые вы бы не хотели включать в RSS? Может быть, эта категория с рекламными обзорами или вашими личными новостями, которая не интересна ценителям основного контента? Так что идея НЕ включать ее в общую ленту выглядит отличной!

Решаем проблему: Ниже описан алгоритм действий, который поможет исключить произвольную категорию из ленты:

  1. Вычисляем ID ненужной категории. Его вы можете узнать в настройках самой категории
  2. Теперь идет в редактирование файла вашей темы functions.php
  3. Вставляем в файл следующий код и сохраняем
function myFilter($query) {
    if ($query->is_feed) {
        $query->set('cat','-5'); //Не забудьте вставить свой ID ^_^
    }
return $query;
}

add_filter('pre_get_posts','myFilter');

Дополнительно: Не забудьте в коде заменить значение на ваш ID. Тут так же используется полезная функция add_filter () применимо к pre_get_posts ().

7. Выводим любую RSS-ленту на WordPress блоге

Проблема: Может быть у вас несколько блогов? Или даже у вас есть тематический форум? Тогда вам наверняка захочется сделать вывод последних новостей на своем блоге.

Решаем проблему: Все это можно решить плагинами, но мы четко решили не пользоваться ими. Да и к тому же WordPress имеет встроенный RSS-ридер который можно использовать для вывода новостей.
Идем в редактирование шаблона и в нужном месте (например, в сайдбаре или в футере) вставляем следующий код:

Дополнительно: Первое что мы делаем, это подгружаем стандартный rss.php. Этот файл нам позволяет использовать функцию wp_rss (), которая имеет два параметра: адрес rss-потока и количество выводимых элементов.

8. Используем отдельные RSS-ленты для разных категорий

Проблема: Некоторые блоги ведутся авторами, которые интересуются различными темами, иногда не связанными друг с другом. Например, программирование, веб-дизайн, блоггинг, seo и т.д. А что если читателю интересна только одна из этих тем? В этом случае стоит задуматься над тем, чтобы выводить новости для каждой категории отдельно.

Решаем проблему: Представьте, что вы хотите подписаться только на категорию WordPress, которая имеет следующий адрес:

http://alaev.info/blog/category/wordpress

Чтобы получить адрес RSS-ленты для данной категории необходимо добавить только /feed в конце url’а, вот так:

http://alaev.info/blog/category/wordpress/feed

Очень просто, не так ли? Но в то же время очень полезно, по-моему.

9. Выводим список RSS-подписок по категориям

RSS подписка на категории

Проблема: Если вам понравился предыдущий пункт, вам наверняка приглянется и этот. Сейчас мы займемся выводом названий категорий для подписки и картинки RSS.

Решаем проблему: Открываем необходимый файл вашей темы оформления, находим подходящее место и вставляем следующий код:

Дополнительно: Этот метод использует старую добрую функцию wp_list_categories (). Она содержит два параметра: feed_image – путь к изображению отображения фида и, собственно, параметр определяющий формат самого фида.

10. Избавляемся от RSS … совсем 😉

Избавляемся от RSS

Сперва вам необходимо будет ответить на вопрос, а для чего вы используете CMS WordPress? Для своего портфолио или это сайт вашей фирмы? Тогда может быть вам и не нужна RSS-лента на сайте и надо ее удалить?

Решаем проблему: На эту тему есть много советов, например, некоторые советуют просто удалить include в файле wp-settings.php. Но я бы не стал так поступать и редактировать этот файл. Все можно сделать проще. Следующий код поможет вам решить проблему раз и навсегда. Вставляем его в functions.php:

function fb_disable_feed() {
	wp_die( __('Фид недоступен, пожалуйста, перейдите на нашу главную страницу!') );
}

add_action('do_feed', 'fb_disable_feed', 1);
add_action('do_feed_rdf', 'fb_disable_feed', 1);
add_action('do_feed_rss', 'fb_disable_feed', 1);
add_action('do_feed_rss2', 'fb_disable_feed', 1);
add_action('do_feed_atom', 'fb_disable_feed', 1);

Источник: alaev.info/blog/post/865

Рубрика: WordPress | Оставить комментарий

Mysql оптимизация при помощи mysqltuner

MySQLTuner (http://mysqltuner.com) представляет собой Perl скрипт,
анализирующий статистику работы MySQL сервера и на ее основе дающий
рекомендации по оптимизации настойки СУБД. И так, скачиваем сам скрипт:

wget http://mysqltuner.com/mysqltuner.pl
 chmod +x mysqltuner.pl

запускаем:

perl mysqltuner.pl

вас попросят ввести логин и пароль root-a. В итоге вы получите подобный результат:

-------- General Statistics --------------------------------------------------
 [--] Skipped version check for MySQLTuner script
 [OK] Currently running supported MySQL version 5.1.56
 [OK] Operating on 32-bit architecture with less than 2GB RAM
-------- Storage Engine Statistics -------------------------------------------
 [--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
 [--] Data in MyISAM tables: 104M (Tables: 339)
 [--] Data in InnoDB tables: 15M (Tables: 40)
 [!!] Total fragmented tables: 90
-------- Performance Metrics -------------------------------------------------
 [--] Up for: 16d 20h 48m 45s (2M q [1.535 qps], 84K conn, TX: 55B, RX: 429M)
 [--] Reads / Writes: 43% / 57%
 [--] Total buffers: 106.0M global + 9.2M per thread (500 max threads)
 [!!] Allocating > 2GB RAM on 32-bit systems can cause system instability
 [!!] Maximum possible memory usage: 4.6G (231% of installed RAM)
 [OK] Slow queries: 0% (3/2M)
 [OK] Highest usage of available connections: 6% (32/500)
 [OK] Key buffer size / total MyISAM indexes: 16.0M/13.9M
 [OK] Key buffer hit rate: 100.0% (65M cached / 3K reads)
 [OK] Query cache efficiency: 74.4% (1M cached / 1M selects)
 [!!] Query cache prunes per day: 626
 [OK] Sorts requiring temporary tables: 0% (289 temp sorts / 42K sorts)
 [!!] Joins performed without indexes: 52872
 [OK] Temporary tables created on disk: 24% (24K on disk / 99K total)
 [OK] Thread cache hit rate: 99% (32 created / 84K connections)
 [!!] Table cache hit rate: 9% (305 open / 3K opened)
 [OK] Open file limit used: 17% (459/2K)
 [OK] Table locks acquired immediately: 99% (947K immediate / 947K locks)
 [!!] InnoDB data size / buffer pool: 15.1M/8.0M
-------- Recommendations -----------------------------------------------------
 General recommendations:
 Run OPTIMIZE TABLE to defragment tables for better performance
 Enable the slow query log to troubleshoot bad queries
 Adjust your join queries to always utilize indexes
 Increase table_cache gradually to avoid file descriptor limits
 Variables to adjust:
 *** MySQL's maximum memory usage is dangerously high ***
 *** Add RAM before increasing MySQL buffer variables ***
 query_cache_size (> 64M)
 join_buffer_size (> 2.0M, or always use indexes with joins)
 table_cache (> 1024)
 innodb_buffer_pool_size (>= 15M)

Обратите свое внимание на рекомендации, и для лучшей работы MySQL внести предложенные изменения в my.cnf

Оригинал: eddnet.org/?p=1784

Рубрика: *mysql | 1 комментарий

Установка и настройка почтового сервера Postfix на CentOS 6.2 x32

В данном посте описан процесс установки почтового сервера на основе MTA Postfix. В качестве платформы будет использована CentOS версии 6.2 x32.
Для полноценной работы понадобятся дополнительные пакеты, такие как: Dovecot v2, MySQL, Postgrey, ClamAV.
Краткое содержание:
1. Установка MySQL и создание базы
2. Установка и настройка Postfix
3. Установка и настройка Dovecot
4. Установка Postgrey
5. Установка ClamAV
6. Установка PostfixAdmin и Apache
7. Настройка DNS сервера
8. Установка и настройка RoundCube Web Mail

Альтернативный почтовый сервер на Exim:
Установка и настройка почтового сервера Exim на CentOS 6.2 x32

Домен:

point.local

Имя хоста почтового сервера:

mx.point.local

IP адрес почтового сервера:

192.168.1.2

Начнем нашу установку  с базы данных MySQL
1. Установка MySQL и создание базы

# yum install mysql-server mysql-devel -y

# service mysqld start

# vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# chkconfig —level 35 mysqld on

# service mysqld restart

# mysql -u root -p

mysql>  Enter password: *****
mysql>  CREATE DATABASE mail;
mysql>  GRANT ALL PRIVILEGES ON mail.* TO 'postfix'@'localhost' IDENTIFIED BY 'password';
mysql>  quit

2. Установка и настройка Postfix

# yum install postfix mysql pam  mod_ssl  openssl crypto-utils -y

На всякие пожарные, сохраним оригинальный конфиг файл:

# mv /etc/postfix/main.cf /etc/postfix/main.cf.original

Создадим свой:

# vi /etc/postfix/main.cf

soft_bounce = no
queue_directory = /var/spool/postfix
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
default_privs = nobody
inet_interfaces = all
myhostname = mx.point.local
mydomain = point.local
myorigin = $mydomain
mydestination = $myhostname,localhost.$myhostname,localhost
local_recipient_maps = $virtual_mailbox_maps, $virtual_alias_maps, $transport_maps
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8
relay_domains = $transport_maps
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/mail
smtpd_banner = $myhostname ESMTP
debug_peer_level = 2
debug_peer_list = 127.0.0.1
debugger_command = 
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    xxgdb $daemon_directory/$process_name $process_id & sleep 5 
sendmail_path = /usr/sbin/sendmail
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/local/man
config_directory = /etc/postfix

Этот листинг содержит базовые настройки для запуска Postfix. В нем нам интересны такие настройки как debug_peer_level  и   debug_peer_list. Это строчки отвечают за логирование SMTP сессий.
Первая debug_peer_level отвечает за уровень логирования, а вторая строчка указывает с каких хостов и сетей должны попадать логи.
Для примера, можно ввести адреса серверов популярных почтовых сервисов:

debug_peer_level = 2
debug_peer_list =  yandex.ru, mail.ru pochta.ru 10.10.10.23/32 10.10.10.0/24

Хосты и сети можно перечислять через пробелы и знака запятой.
Если будут проблемы, вас спасет это debug режим.
Примечание:  При составлении Postfix конфигов, важно соблюдать отступы.
Откроем опять главный конфиг файл:

# vi /etc/postfix/main.cf

И добавим текст:

virtual_mailbox_domains = mysql:$config_directory/sql/vdomains.cf
virtual_mailbox_base = /var/vmail
virtual_mailbox_maps = mysql:$config_directory/sql/vmailbox.cf
virtual_alias_maps = mysql:$config_directory/sql/valias.cf
virtual_minimum_uid = 1150
virtual_uid_maps = static:1150
virtual_gid_maps = static:12
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/dovecot-auth

В этом листинг важно выставить идентификаторы пользователя, под которым будет работать Postfix. Если пользователь создан, ID  можно взять с файла /etc/passwd, а ID группы хранится в  /etc/groups.  Так как у нас нет данного пользователя, создадим его:

# useradd -r -u 1150 -g mail -d /var/vmail -s /sbin/nologin -c Virtual vmail

Тут мы создали нового пользователя vmail c идентификатором ID — 1150, добавили его в группу mail.

# mkdir -p -v /var/vmail

# chmod 770 -R /var/vmail

# chown vmail:mail /var/vmail

Для корректной работы создали каталог почтовых сообщений /var/vmail, куда будет попадать почтовая переписка.

# setup

Firewall Configuration -> Firewall Enabled -> Убираем галочку

Здесь мы отключи встроенную цепочку правил фаерволла (RH-Input)
Отключаем SELINUX:

# gedit /etc/selinux/config

Находим строчку:

SELINUX=enforcing

Приводим ее к виду:

SELINUX=disabled

Встроенная цепочка и SELINUX  иногда мешают нормальной работе программ.  Поэтому мы отключили их.
Теперь запретим нашему серверу быть открытым Релеем, допишем:

# vi /etc/postfix/main.cf

smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    permit

Создадим дополнительные конфигурационные файлы, которые указаны в /etc/postfix/main.cf, эти файлы отвечают за обращение к базе данных MySQL:

# mkdir /etc/postfix/sql

# vi /etc/postfix/sql/vdomains.cf

user = postfix
password = password
hosts = localhost
dbname = mail
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx='0' AND active='1'

# vi /etc/postfix/sql/vmailbox.cf

user = postfix
password = password
hosts = localhost
dbname = mail
table = mailbox
select_field = CONCAT(domain,'/',maildir)
where_field = username
additional_conditions = and active = '1'
#query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s'AND active = '1'

# vi /etc/postfix/sql/valias.cf

user = postfix
password = password
hosts = localhost
dbname     = mail
table = alias
select_field = goto
where_field = address
additional_conditions = and active = '1'
#query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

3. Установка и настройка Dovecot

# yum install dovecot dovecot-mysql -y

Чтобы Dovecot служил локальным транспортом, допишем следующие строчки в /etc/postfix/master.cf

# vi /etc/postfix/master.cf

dovecot    unix    -    n    n    -    -    pipe
             flags=DRhu user=vmail:mail argv=/usr/libexec/dovecot/deliver -d $(recipient)

Добавим в main.cf следующие строчки:

# vi /etc/postfix/main.cf

smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    reject_non_fqdn_recipient,
    reject_unverified_recipient,
    reject_rbl_client cbl.abuseat.org,
    reject_rbl_client dialups.mail-abuse.org,

Сохраним оригинальный конфиг файл dovecot.conf

# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig

Создаем файл /etc/dovecot/dovecot.conf

# vi /etc/dovecot/dovecot.conf

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

# 2.0.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-220.7.1.el6.i686 i686 CentOS release 6.2 (Final) ext4
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login cram-md5
auth_verbose = yes
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
ssl = no
first_valid_uid = 1150
last_valid_uid = 1150
log_timestamp = %Y-%m-%d %H:%M:%S
mail_debug = yes
mail_location = maildir:/var/vmail/%d/%u
passdb {
args = /etc/dovecot-sql.conf
driver = sql
}
protocols = imap pop3
service auth {
unix_listener /var/spool/postfix/private/dovecot-auth {
user = postfix
group = postfix
mode = 0660
}
unix_listener auth-master {
user = vmail
group = mail
mode = 0660
}
unix_listener auth-userdb {
user = vmail
group = mail
mode = 0660
}
#user=root
}
service imap-login {
executable = /usr/libexec/dovecot/imap-login
inet_listener imap {
address = *
port = 143
}
}
service imap {
executable = /usr/libexec/dovecot/imap
}
service pop3-login {
executable = /usr/libexec/dovecot/pop3-login
inet_listener pop3 {
address = *
port = 110
}
}
service pop3 {
executable = /usr/libexec/dovecot/pop3
}
userdb {
args = /etc/dovecot-sql.conf
driver = sql
} 

Теперь создайте файл /etc/dovecot-sql.conf

# vi /etc/dovecot-sql.conf

Внутри него поместите:

driver = mysql
connect = host=localhost dbname=mail user=postfix password=password
default_pass_scheme = MD5
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n'as mail, 1150 AS uid, 12 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1150 as userdb_uid, 12 asuserdb_gid FROM mailbox WHERE username = '%u' AND active = '1'

4. Установка Postgrey
Подключим необходимый репозитарий:

# rpm -Uvh http://pkgs.repoforge.org/rpmforge-rele … f.i686.rpm

Теперь установим Postgrey:

# yum install postgrey -y

После установки нам нужно дописать всего 1 строчку в главный конфигурационный файл main.cf, чтобы postfix подружился со спам фильтром postgrey. Открываем main.cf и делаем соответствующие изменения:

smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    check_policy_service unix:/var/spool/postfix/postgrey/socket,
    reject_non_fqdn_recipient,
    reject_unverified_recipient,
    reject_rbl_client cbl.abuseat.org,
    reject_rbl_client dialups.mail-abuse.org,
    reject_rbl_client dull.ru

Примечание: строчка “check_policy_service unix …” должна быть обязательно прописана после строчки параметра “reject_unauth_destination”, как на примере выше.
5. Установка ClamAV

# yum remove rpmforge-release -y

# rpm -Uvh http://download.fedoraproject.org/pub/e … noarch.rpm

# yum install clamav clamav-server clamsmtp –y

# mv /etc/clamsmtpd.conf /etc/clamsmtpd.conf.orig

# vi /etc/clamsmtpd.conf

OutAddress: 10026
        TimeOut: 180
        KeepAlives: 0
        XClient: on
        Listen: 127.0.0.1:10025
        ClamAddress: /var/run/clamav/clamd.sock
        Header: X-Virus-Scanned: ClamAV using ClamSMTP
        TempDirectory: /var/tmp
        Action: drop 
        Quarantine: on
        User: clam

# chown clam:mail -R /var/run/clamd.clamsmtp/
# chown clam:clam -R /var/lib/clamd.clamsmtp

Добавляем в main.cf строчки:

# vi /etc/postfix/main.cf

content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings

Добавляем в master.cf строчки:

# vi /etc/postfix/master.cf

scan unix - - n - 16 smtp -o smtp_send_xforward_command=yes

Добавляем ниже приведенный конфиг в master.cf:

# vi /etc/postfix/master.cf

127.0.0.1:10026 inet n - n - 16 smtpd
             -o content_filter=
             -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
             -o smtpd_helo_restrictions=
             -o smtpd_client_restrictions=
             -o smtpd_sender_restrictions=
             -o smtpd_recipient_restrictions=permit_mynetworks,reject
             -o mynetworks_style=host
             -o smtpd_authorized_xforward_hosts=127.0.0.0/8
   

6. Установка PostfixAdmin и Apache
Установим зависимости для Postfixadmin:

# yum -y install httpd php php-imap php-mbstring php-common php-pdo php-mysql php-cli gedit mc

Скачаем Postfixadmin и настроим его:

# cd /var/www/html

# wget http://sourceforge.net/projects/postfix … z/download

# tar -xvzf postfixadmin-2.3.6.tar.gz

# mv postfixadmin-2.3.6/ postfixadmin

# cd  postfixadmin

# gedit /var/www/html/postfixadmin/config.inc.php

$CONF['configured'] = true;
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'password';
$CONF['database_name'] = 'mail';
$CONF['emailcheck_resolve_domain']='YES';

Ставим все службы в автозагрузку:

# chkconfig —level 35 mysqld on

# chkconfig —level 35 dovecot on

# chkconfig —level 35 postfix on

# chkconfig —level 35 httpd on

# chkconfig —level 35 postgrey on

# chkconfig —level 35 clamd on

# chkconfig —level 35 clamsmtpd on

# chkconfig —level 35 saslauthd on

7. Настройка DNS сервера
Для того чтобы протестировать почтовый сервер, настройте Bind. Этот пакет позволить настроить DNS сервер.
Напомню, что наш почтовый сервер имеет следующий IP адрес 192.168.1.2.

# yum install bind -y

# gedit /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=mx.point.local

# gedit /etc/hosts

192.168.1.2 mx.point.local mx

Удаляем Network Manager (NM):

# service NetworkManager stop

# chkconfig NetworkManager off

# yum remove dnsmasq -y

# vi /etc/resolv.conf

nameserver 192.168.1.2

# gedit /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */

        bindkeys-file "/etc/named.iscdlv.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

zone "point.local" {
        type master;
        file "point.local.fwd";
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "point.local.rev";
};

include "/etc/named.rfc1912.zones";

# gedit  /var/named/point.local.fwd

$ORIGIN point.local.

$TTL 3D

@       SOA             mx.point.local.     root.point.local. (12 4h 1h 1w 1h)
@       IN      NS          mx.point.local.
@       IN      MX      10    mail.point.local.

mx.point.local.    IN      A    192.168.1.2
www            IN      A    192.168.1.2
mail            IN    A    192.168.1.2

# gedit  /var/named/point.local.rev

$ORIGIN 1.168.192.in-addr.arpa.

$TTL 3D
@    SOA         mx.point.local.    root.point.local. (12 4h 1h 1w 1h)
@    IN      NS      mx.point.local.
2    IN      PTR     mx.point.local.
# gedit /etc/resolv.conf -> ставим свой IP адрес 192.168.1.2  -  nameserver 192.168.1.2

# service named start

# chkconfig —level 35 named on

Проверка работы DNS:

# dig point.local

; <<>> DiG 9.7.4-RedHat-9.7.4-1.el5 <<>> point.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53153
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;point.local.                   IN      A
;; ANSWER SECTION:
point.local.            3600    IN      A       192.168.1.2
;; AUTHORITY SECTION:
point.local.            3600    IN      NS      mx.point.local.
;; ADDITIONAL SECTION:
mx.point.local.         3600    IN      A       192.168.1.2
;; Query time: 8 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Wed Aug 17 05:03:48 2011
;; MSG SIZE  rcvd: 78

# nslookup mx.point.local

# nslookup 192.168.1.2

# nslookup -type=MX point.local

hostname -f

mx.point.local

# reboot

Теперь зайдите в PostfixAdmin, для этого запустите браузер и введите веб адрес http://127.0.0.1/postfixadmin/setup.php

В окошке Change setup password введите свой пароль. Запомните его, он нам пригодится в дальнейшем.

Во втором окошке появится HASH нашего пароля (шифрованный пароль). Скопируйте эту "белеберду" в буфер.
После того как вы скопировали "hash" в буфер обмена, его нужно вставить в файл:

/var/www/html/postfixadmin/config.inc.php

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

$CONF['setup_password'] = 'changeme';

За место "changeme" ставим наш hash который скопировали в буфер. Получится так:

$CONF['setup_password'] = '6c5af4c72af213f0acac5f21d8f95ca1:e59172283d2bb72a5992af8ddc15332cde62f003';

И еще поставьте YES здесь:

$CONF['emailcheck_resolve_domain']='YES';

Сохраните файл.
Зайдите еще раз на страничку: http://127.0.0.1/postfixadmin/setup.php

Создайте учетку Админа, например "[email protected]", определите его пароль.

Нажмите на кнопке "Add Admin", появится надпись:

Admin has been added!
([email protected])

Запомните адрес админа и пароль.
Теперь уже заходим на страничку http://127.0.0.1/postfixadmin/

Вводим почтовый адрес админа и пароль.
Добавляем домен "point.local":  Domain List - > New Domain -> point.local

Aliases - Ставим 0
Mailboxes - Ставим 0
Add default mail aliases - Галочка 

После появится надпись:

Domain has been added!
(point.local)

Создадим первый почтовый ящик, я создал "[email protected]".
Меню Virtual List -> Add MailBox ->
Username - linux
Password - 123 (sample)

Ну все!
Теперь пришло время тестировать наш почтовый сервер.

Найдите в локальной сети свободный компьютер, настройте сетевые настройки так чтобы он видел почтовый сервер.
Сетевой адрес должен быть в под сети сервера. Не забудьте указать ДНС сервер,  у меня он имеет IP адрес почтового сервера.
Откройте почтовый клиент Outlook, укажите адрес вашего сервера и логин/пароль учетной записи [email protected]
SMTP/POP3 server:                        point.local
Учетная запись (Account name):   [email protected]
Пароль (password):                      123

Примечание: Не забудьте настроить SMTP авторизацию.

Отправьте себе тестовое письмо!
8. Установка и настройка RoundCube Web Mail
На данном этапе у нас есть удобный веб интерфейс для администратора почтового сервера, но нет веб интерфейса для пользователей. Этот досадное недоразумение решается установкой RoundCube:

# rpm -Uvh http://download.fedoraproject.org/pub/e … noarch.rpm

# yum install php-xml php-mcrypt php-intl php-sqlite php-pgsql

# cd /var/www/html

# wget http://nchc.dl.sourceforge.net/project/ … 7.2.tar.gz

# tar xvfz roundcubemail-0.7.2.tar.gz

# mv roundcubemail-0.7.2 roundcube

Cоздаем файл roundcube.conf:

# vi /etc/httpd/conf.d/roundcube.conf

Вписываем следующее:

Alias /webmail /var/www/html/roundcube

AddType application/x-httpd-php .php .php3 .php4 .phtml
# forcing open_base dir do not affect anything
php_admin_value open_basedir /
# AddDefaultCharset UTF-8
AddType text/x-component .htc

php_flag display_errors Off
php_flag log_errors On
php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
php_value memory_limit 64M


php_flag display_errors Off
php_flag log_errors On
php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
php_value memory_limit 64M


Order allow,deny
Deny from all

Order deny,allow
Allow from all

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

# mysqladmin -p create roundcubemail

# mysql -p

mysql> GRANT ALL ON roundcube.* TO roundcube@localhost IDENTIFIED BY 'password';

# service httpd restart

# chown apache:apache -R /var/www/html/roundcube/temp

# chown apache:apache -R /var/www/html/roundcube/log

Далее  идем по адресу http://127.0.0.1/roundcube/installer/ и  устанавливаем по умолчанию, не меняя никаких настроек, кроме двух полей,  где нужно указать название базы данных и пароль. В нашем случае  название будет roundcubemail, а пароль, указанный ранее. Если все прошло успешно, удаляем директорию установщика в целях безопасности.

# rm -R -f /var/www/html/roundcube/installer

Альтернативный почтовый сервер на Exim:
Установка и настройка почтового сервера Exim на CentOS 6.2 x32

Оригинал: linuxforum.ru/viewtopic.php?id=21932

Рубрика: *Mail | Оставить комментарий

Установка и настройка почтового сервера Exim на CentOS 6.2 x32

В этом коротком посте описан процесс установки почтового сервера на базе MTA Exim 4.77 с MDA Dovecot v2, MySQL, Clamav и Postfixadmin.

Альтернативный почтовый сервер на Postfix:
Установка и настройка почтового сервера Postfix на CentOS 6.2 x32

PS: Решил выложить настройку Exim.

Домен:

point.local

Имя почтового сервера:

mx.point.local

IP адрес почтового сервера:

192.168.1.2

Краткое содержание:

1. Подключение необходимых репозитариев

2. Установка СУБД MySQL, создание базы данных VEXIM

3. Установка Postfixadmin

4. Установка ClamAV

5. Установка и настройка Dovecot

6. Установка и настройка Exim

7. Отключаем Postfix

8. Добавление сервисов в автозагрузку

9. Настройка DNS сервера для тестирования

10. Установка и настройка RoundCube Web Mail

Приступим….

1. Подключим необходимые репозитарии:

# rpm -Uvh http://dl.atrpms.net/el6-i386/atrpms/st … 6.i686.rpm

2. Установка СУБД MySQL, создание базы данных VEXIM
Установим СУБД MySQL:

# yum -y install mysql-server mysql
# service mysqld start

Создадим базу данных Vexim:

# mysql

mysql> CREATE DATABASE vexim;
mysql> GRANT ALL ON vexim.* to vexim@localhost identified by 'password';
mysql>quit

3. Установка Postfixadmin
Установим зависимости для Postfixadmin:

# yum -y install httpd php php-imap php-mbstring php-common php-pdo php-mysql php-cli gedit mc

Скачаем Postfixadmin и настроим его:

# cd /var/www/html
# wget http://sourceforge.net/projects/postfix … z/download
# tar -xvzf postfixadmin-2.3.5.tar.gz
# mv postfixadmin-2.3.5/ postfixadmin
# cd  postfixadmin

# gedit config.inc.php

$CONF['configured'] = true;
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'vexim';
$CONF['database_password'] = 'password';
$CONF['database_name'] = 'vexim';

4. Установка ClamAV
Установим Clamav:

# yum -y install clamav

# freshclam -v

5. Установка и настройка Dovecot
Установим Dovecot:

# yum install dovecot dovecot-mysql -y

# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-orig

Настроим Dovecot, создайте файл /etc/dovecot/dovecot.conf:

# gedit /etc/dovecot/dovecot.conf

# 2.0.14: dovecot.conf
# OS: Linux 2.6.32-71.29.1.el6.i686 i686 CentOS Linux release 6.0 (Final) 
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
first_valid_uid = 93
listen = *
login_greeting = Dovecot ready man.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
mail_location = maildir:/var/vmail/%d/%u
passdb {
driver = pam
}
passdb {
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
protocols = imap pop3
service auth {
unix_listener auth-master {
group = exim
mode = 0660
user = exim
}
user = root
}
service imap-login {
chroot = 
client_limit = 256
process_limit = 128
process_min_avail = 3
service_count = 1
vsz_limit = 64 M
}
service pop3-login {
chroot = 
client_limit = 256
process_limit = 128
process_min_avail = 3
service_count = 1
vsz_limit = 64 M
}
ssl = no
userdb {
driver = passwd
}
userdb {
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
protocol imap {
imap_client_workarounds = tb-extra-mailbox-sep
mail_plugins = quota imap_quota
}
protocol pop3 {
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = [email protected]
}

# gedit /etc/dovecot/dovecot-mysql.conf

#File: /etc/dovecot/dovecot-mysql.conf
driver = mysql
connect = host=localhost dbname=vexim user=vexim password=password
default_pass_scheme = MD5-CRYPT
password_query = SELECT `username` as `user`, `password` FROM  `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
user_query = SELECT 93 AS `uid`, 93 AS `gid` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'

6. Установка и настройка Exim
Установим сам Exim:

# yum install exim exim-mysql -y
# mv /etc/exim/exim.conf /etc/exim/exim.conf-orig

Теперь настроим Exim, создадим конфиг файл /etc/exim/exim.conf

# gedit /etc/exim/exim.conf

primary_hostname = mx.point.local
hide mysql_servers = localhost/vexim/vexim/password

domainlist local_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${quote_mysql:$domain}' AND \
`active`='1'}}

domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${quote_mysql:$domain}' AND \
`active`='1'}}

hostlist   relay_from_hosts = localhost:127.0.0.0/8:192.168.1.0/24 #add the hosts from which you allow relaying here

acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data

av_scanner = clamd:/var/run/clamav/clamd.socket

# spamd_address = 127.0.0.1 783

qualify_domain = point.local
qualify_recipient = point.local
allow_domain_literals = false
exim_user = exim
exim_group = exim
never_users = root
rfc1413_query_timeout = 0s

sender_unqualified_hosts = +relay_from_hosts
recipient_unqualified_hosts = +relay_from_hosts

ignore_bounce_errors_after = 45m
timeout_frozen_after = 15d
helo_accept_junk_hosts = 192.168.1.0/24
auto_thaw = 1h
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"
smtp_accept_max = 50
smtp_accept_max_per_connection = 25
smtp_connect_backlog = 30
smtp_accept_max_per_host = 20
split_spool_directory = true
remote_max_parallel = 15
return_size_limit = 70k
message_size_limit = 64M
helo_allow_chars = _
smtp_enforce_sync = true

log_selector = \
+all_parents \
+connection_reject \
+incoming_interface \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_run

syslog_timestamp = no

begin acl

acl_check_rcpt:
accept  hosts = :
deny    message       = "incorrect symbol in address"
domains       = +local_domains
local_parts   = ^[.] : ^.*[@%!/|]

deny    message       = "incorrect symbol in address"
domains       = !+local_domains
local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

accept  local_parts   = postmaster
domains       = +local_domains

deny    message       = "HELO/EHLO required by SMTP RFC"
condition     = ${if eq{$sender_helo_name}{}{yes}{no}}

accept  authenticated = *

deny    message       = "Your IP in HELO - access denied!"
hosts         =  * : !+relay_from_hosts : !81-196.point.local
condition     = ${if eq{$sender_helo_name}\
{$sender_host_address}{true}{false}}

deny    condition     = ${if eq{$sender_helo_name}\
{$interface_address}{yes}{no}}
hosts         = !127.0.0.1 : !localhost : *
message       = "My IP in your HELO! Access denied!"

deny    condition     = ${if match{$sender_helo_name}\
{\N^\d+$\N}{yes}{no}}
hosts         = !127.0.0.1 : !localhost : *
message       = "Incorrect HELO string"

# filter spammers from dynamic ips
deny    message       = "your hostname is bad (adsl, poll, ppp & etc)."
condition     = ${if match{$sender_host_name} \
{adsl|dialup|pool|peer|dhcp} \
{yes}{no}}

warn
set acl_m0 = 30s
warn
hosts = +relay_from_hosts:4.3.2.1/32:192.168.1.0/24 #disable waits for 'friendly' hosts
set acl_m0 = 0s
warn
logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
delay = $acl_m0

accept  domains       = +local_domains
endpass
message       = "No such user"
verify        = recipient

accept  domains       = +relay_to_domains
endpass
message       = "i don't know how to relay to this address"
verify        = recipient

#  deny    message       = "you in blacklist - $dnslist_domain \n $dnslist_text"
#          dnslists      = opm.blitzed.org : \
#                          cbl.abuseat.org : \
#                          bl.csma.biz

accept  hosts         = +relay_from_hosts

deny    message       = "Homo hominus lupus est"

acl_check_data:

# check for viruses
deny malware = *
message = "Your message contains viruses: $malware_name"

# if needed - add spam filtering here

# permit everything else
accept

begin routers

dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more

system_aliases:
driver      = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}}

dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT `goto` FROM \
`alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}{yes}{no}}
transport = dovecot_delivery

begin transports

remote_smtp:
driver = smtp
#interface = 4.3.2.1 #your public ip address, if it's the main server ip - you could skip this parameter. if it's an alias- it must be specified in clear

dovecot_delivery:
driver = pipe
command = /usr/libexec/dovecot/deliver -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = exim

address_pipe:
driver = pipe
return_output

address_reply:
driver = autoreply

begin retry

*                    *       F,2h,15m; G,16h,1h,1.5; F,4d,6h

begin rewrite

begin authenticators

auth_plain:
driver = plaintext
public_name = LOGIN
server_prompts = Username:: : Password::
server_condition = "${if crypteq{$2}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$1}'}}}{yes}{no}}"
server_set_id = $1

auth_login:
driver = plaintext
public_name = PLAIN
server_condition = "${if crypteq{$3}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$2}'}}}{yes}{no}}"
server_prompts = :
server_set_id = $2

auth_cram_md5:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

7. Отключаем Postfix

# alternatives —config mta
# chkconfig —level 123456 postfix off
# service postfix stop
# yum remove postfix -y

Также отключим цепочку RH-Input:

# setup

Firewall Configuration -> Firewall Enabled -> Убираем галочку

Отключаем SELINUX:

# gedit /etc/selinux/config   -> SELINUX=disabled

8. Добавление сервисов в автозагрузку

# chkconfig —level 35 clamav on
# chkconfig —level 35 mysqld on
# chkconfig —level 35 httpd on
# chkconfig —level 35 exim on
# chkconfig —level 35 dovecot on

Выставляем права:

# usermod -a -G exim clamav
# chmod -Rf g+w /var/spool/exim
# chmod -Rf g+s /var/spool/exim
# mkdir /var/vmail
# chown exim:exim -R /var/vmail
# chown exim:exim -R /var/spool/exim
# chown clamav:clamav -R /var/run/clamav/

9. Настройка DNS сервера
Для того чтобы протестировать почтовый сервер, настройте Bind. Этот пакет позволить настроить DNS сервер.
Напомню, что наш почтовый сервер имеет следующий IP адрес 192.168.1.2.

# yum install bind -y

# gedit /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=mx.point.local

# gedit /etc/hosts

192.168.1.2 mx.point.local mx

# service NetworkManager stop

# chkconfig NetworkManager off

# yum remove dnsmasq -y

# vi /etc/resolv.conf

nameserver 192.168.1.2

# gedit /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */

        bindkeys-file "/etc/named.iscdlv.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

zone "point.local" {
        type master;
        file "point.local.fwd";
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "point.local.rev";
};

include "/etc/named.rfc1912.zones";

# gedit  /var/named/point.local.fwd

$ORIGIN point.local.

$TTL 3D

@       SOA             mx.point.local.     root.point.local. (12 4h 1h 1w 1h)
@       IN      NS          mx.point.local.
@       IN      MX      10    mail.point.local.

mx.point.local.    IN      A    192.168.1.2
www            IN      A    192.168.1.2
mail            IN    A    192.168.1.2

# gedit  /var/named/point.local.rev

$ORIGIN 1.168.192.in-addr.arpa.

$TTL 3D
@    SOA         mx.point.local.    root.point.local. (12 4h 1h 1w 1h)
@    IN      NS      mx.point.local.
2    IN      PTR     mx.point.local.
# gedit /etc/resolv.conf -> ставим свой IP адрес 192.168.1.2  -  nameserver 192.168.1.2

# service named start

# chkconfig —level 35 named on

Проверка работы настроенного DNS:

# dig point.local

; <<>> DiG 9.7.4-RedHat-9.7.4-1.el5 <<>> point.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53153
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;point.local.                   IN      A
;; ANSWER SECTION:
point.local.            3600    IN      A       192.168.1.2
;; AUTHORITY SECTION:
point.local.            3600    IN      NS      mx.point.local.
;; ADDITIONAL SECTION:
mx.point.local.         3600    IN      A       192.168.1.2
;; Query time: 8 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Wed Aug 17 05:03:48 2011
;; MSG SIZE  rcvd: 78

# nslookup mx.point.local

# nslookup 192.168.1.2
# nslookup -type=MX point.local

# reboot

Теперь зайдите в PostfixAdmin, для этого запустите браузер и введите веб адрес http://127.0.0.1/postfixadmin/setup.php

В окошке Change setup password введите свой пароль. Запомните его, он нам пригодится в дальнейшем.

Во втором окошке появится HASH нашего пароля (шифрованный пароль). Скопируйте эту "белеберду" в буфер.

После того как вы скопировали "hash" в буфер обмена, его нужно вставить в файл /var/www/html/postfixadmin/config.inc.php

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

$CONF['setup_password'] = 'changeme';

За место "changeme" ставим наш hash который скопировали в буфер. Получится так:

$CONF['setup_password'] = '6c5af4c72af213f0acac5f21d8f95ca1:e59172283d2bb72a5992af8ddc15332cde62f003';

И еще поставьте NO здесь:

$CONF['emailcheck_resolve_domain']='NO';

Сохраните файл.

Зайдите еще раз на страничку: http://127.0.0.1/postfixadmin/setup.php
Создайте учетку Админа, например "[email protected]", определите его пароль.
Нажмите на кнопке "Add Admin", появится надпись:

Admin has been added!
([email protected])

Запомните адрес админа и пароль.

Теперь уже заходим на страничку http://127.0.0.1/postfixadmin/
Вводим почтовый адрес админа и пароль.
Добавляем домен "point.local":  Domain List - > New Domain -> point.local

Aliases - Ставим 0

Mailboxes - Ставим 0

Галочка Add default mail aliases
После появится надпись:

Domain has been added!
(point.local)

Создадим первый почтовый ящик, я создал "[email protected]".

Меню Virtual List -> Add MailBox ->

Username - linux

Password - 123 (sample)

Теперь пришло время тестировать наш почтовый сервер.

Найдите в локальной сети свободный компьютер, настройте сетевые настройки так чтобы он видел почтовый сервер.

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

Откройте почтовый клиент Outlook, укажите адрес вашего сервера и логин/пароль учетной записи [email protected]

SMTP/POP3 server:                        point.local

Учетная запись (Account name):   [email protected]

Пароль (password):                      123

Отправьте себе тестовое письмо!

10. Установка и настройка RoundCube Web Mail

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

# rpm -Uvh http://download.fedoraproject.org/pub/e … noarch.rpm
# yum install php-xml php-mcrypt php-intl php-sqlite php-pgsql
# cd /var/www/html
# wget http://nchc.dl.sourceforge.net/project/ … 7.2.tar.gz
# tar xvfz roundcubemail-0.7.2.tar.gz
# mv roundcubemail-0.7.2 roundcube

Cоздаем файл roundcube.conf:

# vi /etc/httpd/conf.d/roundcube.conf

Вписываем следующее:

Alias /webmail /var/www/html/roundcube


AddType application/x-httpd-php .php .php3 .php4 .phtml

# forcing open_base dir do not affect anything
php_admin_value open_basedir /

# AddDefaultCharset UTF-8
AddType text/x-component .htc


php_flag display_errors Off
php_flag log_errors On
php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
php_value memory_limit 64M



php_flag display_errors Off
php_flag log_errors On
php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
php_value memory_limit 64M



Order allow,deny
Deny from all


Order deny,allow
Allow from all

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

# mysqladmin -p create roundcubemail
# mysql -p

mysql> GRANT ALL ON roundcube.* TO roundcube@localhost IDENTIFIED BY 'password';

# service httpd restart
# chown apache:apache -R /var/www/html/roundcube/temp
# chown apache:apache -R /var/www/html/roundcube/log

Далее  идем по адресу http://127.0.0.1/roundcube/installer/ и  устанавливаем по умолчанию, не меняя никаких настроек, кроме двух полей,  где нужно указать название базы данных и пароль. В нашем случае  название будет roundcubemail, а пароль, указанный ранее.Если все прошло успешно, удаляем директорию установщика в целях безопасности.

# rm -R -f /var/www/html/roundcube/installer

Альтернативный почтовый сервер на Postfix:
Установка и настройка почтового сервера Postfix на CentOS 6.2 x32

Оригинал: linuxforum.ru/viewtopic.php?id=21934

Рубрика: *Mail | 2 комментария

Cat & Mouse — Simon’s Cat

Рубрика: мульт | Оставить комментарий