Добрый вечер, дорогие читатели. Сегодняшней публикацией продолжаю пополнять копилку знаний о WordPress на моем блоге. Не одна из предыдущих публикаций на эту тему не осталась без внимания, а значит у вас есть интерес в этой области. И поэтому я не могу не удовлетворить его! Приятного вам изучения. Дальше очень много нужной информации.
RSS — это одна из тех технологий которая очень проста и в то же время просто незаменима. Сегодня RSS это де факто общепринятый стандарт для блогов, и используется повсеместно. Ну а так как большинство блогов в сети построено на WordPress, мы и рассмотрим все примеры применимо к данному движку. Некоторые фишки давно известны, но я уверен, что этот список поможет вам использовать свой RSS в WordPress намного эффективнее, и все это без использования плагинов!
Как и в других моих постах про WordPress хочется построить описание в виде «проблема-решение-описание». Это самый оптимальный вариант описания таких вещей. Потому что вы будете знать, не только как это делается, но и почему делается именно так, а при желании и под себя перестроить.
Пожалуй, будем приступать.
1. Настраиваем время появление поста в 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 feedburnerRewriteEngine 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-ленты уже стала обыденной вещью, особенно за рубежом, и многие блогеры используют эту тактику для увеличения своих доходов. FeedBurner может вставить рекламу AdSense в ленту, но есть некоторые ограничения по подписчикам, чтобы иметь такую возможность. Да и вставить что-то другое кроме AdSense не получится, а это неудобно.
Решаем проблему: Всегда есть возможность вставить что угодно и куда угодно =) Вот, например, вы можете вставить ссылку на что-нибудь «вкусненькое» только для своих подписчиков.
Для этого требуется добавить следующую функцию в файл вашей темы functions.php
А вы уже прокомментировали мои фотографии?
'; return $content; } add_filter('the_excerpt_rss', 'insertAds'); add_filter('the_content_rss', 'insertAds'); ?>
Дополнение: Существует много различных способов добиться нужного результата, но они требуют вмешательства в код. Этот же способ использует только функцию add_filter () для вставки нужного элемента без необходимости править код движка.
4. Форматируем правильно изображения для RSS-ленты
Специально походил сейчас по блогам и таки нашел у нескольких человек эту проблему. Смотрите, проблемный участок я пометил красным.

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

Или так

Проблема: Достаточно много времени все мы тратим на форматирование текста и изображений в записи на блоге. На самом блоге это может выглядеть хорошо, а вот как это будет выглядеть в RSS-ридере? Вы это проверяете? А стоит иногда это делать.
Решаем проблему: Чтобы разобраться с этой проблемой добавляем к изображению параметр style.
Дополнительно: padding:0 10px 5px 0; каждый из четырех параметров означает отступ начиная с верхнего заканчивая левым краем, по часовой стрелке. Следовательно в примере будет отступ для картинки 10px справа и 5px снизу.
5. Предоставьте вашим читателям RSS подписку на комментарии
Проблема: Когда к какому-то из постов оставлено и до сих пор пишется очень много комментариев, читателям будет очень сложно следить за развитием событий. В большинстве тем оформления данная фишка не предусмотрена, но сам WordPress имеет востренную функцию, которая позволит организовать RSS-ленту комментариев к каждому посту.
Решаем проблему: Решение тут совсем простое, никаких хаков не потребуется. Достаточно добавить функцию comment_rss_link () в вашу тему. Смотрим следующий код:
6. Исключаем определенные категории из RSS-ленты
Проблема: Есть ли у вас на блоге категория или даже несколько категорий, которые вы бы не хотели включать в RSS? Может быть, эта категория с рекламными обзорами или вашими личными новостями, которая не интересна ценителям основного контента? Так что идея НЕ включать ее в общую ленту выглядит отличной!
Решаем проблему: Ниже описан алгоритм действий, который поможет исключить произвольную категорию из ленты:
- Вычисляем ID ненужной категории. Его вы можете узнать в настройках самой категории
- Теперь идет в редактирование файла вашей темы functions.php
- Вставляем в файл следующий код и сохраняем
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.
Решаем проблему: Открываем необходимый файл вашей темы оформления, находим подходящее место и вставляем следующий код:
Дополнительно: Этот метод использует старую добрую функцию wp_list_categories (). Она содержит два параметра: feed_image – путь к изображению отображения фида и, собственно, параметр определяющий формат самого фида.
10. Избавляемся от 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
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
Установка и настройка почтового сервера 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
# 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
# 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/roundcubeAddType 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
Установка и настройка почтового сервера 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/roundcubeAddType 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

RSS & RSS to Email