<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Почтовый сервер &#8902; Clip-Clap</title>
	<atom:link href="https://clip-clap.ru/tag/%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d1%8b%d0%b9-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80/feed/" rel="self" type="application/rss+xml" />
	<link>https://clip-clap.ru/tag/почтовый-сервер/</link>
	<description></description>
	<lastBuildDate>Sun, 29 Nov 2020 23:45:04 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.8</generator>

<image>
	<url>https://clip-clap.ru/wp-content/uploads/2020/07/cropped-favicon-32x32.png</url>
	<title>Почтовый сервер &#8902; Clip-Clap</title>
	<link>https://clip-clap.ru/tag/почтовый-сервер/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Перенос почтового сервера postfix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-postfix/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-postfix/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 27 Jul 2020 05:31:45 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[почта]]></category>
		<category><![CDATA[Почтовый сервер]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1326</guid>

					<description><![CDATA[<p>Сегодня расскажу о том, как на практике перенести почтовый сервер postfix на другое железо или виртуальную машину. Поделюсь своим подходом</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-postfix/">Перенос почтового сервера postfix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Сегодня расскажу о том, как на практике перенести почтовый сервер postfix на другое железо или виртуальную машину. Поделюсь своим подходом к решению подобной задачи с минимальным простоем.</p>



<p>Версии софта принципиального значения не имеют. Важно, что почтовая база хранится в формате maildir, все письма на сервере. Основная проблема переноса таких серверов &#8212; очень долгая синхронизация почтовой базы сообщений, состоящей из десятков и сотен тысяч мелких файлов. Если у вас обычные sata диски, просто взять и перенести почтовый сервер на новое место с минимальным простоем не получится. Надо что-то придумывать.</p>


</br>



<p>Я придумал такую схему переноса:</p>



<ol><li>Подготовка системы на новом месте.</li><li>Копирование основной почтовой базы на новое место.</li><li>Остановка старого сервера, заливка изменений в базе на новый сервер.</li><li>Запуск нового почтового сервера как основного.</li></ol>



<p>Я всегда настраиваю сервера так, что системный диск небольшого размера &#8212; 30-50 гб. Все данные, будь то почтовая база, файловый сервер, база данных, сайты и т.д. находятся на отдельном диске. Главное, не экономить сильно и не делать системные диски очень маленькими, как однажды сделал я, сэкономив место на дорогих ssd дисках. Потом пришлось на ходу&nbsp;расширять системный раздел. Оптимально на моей практике это не меньше 30 гб. Если меньше, то приходится ужиматься с логами, кэшами и т.д. Не очень удобно. Все, что больше 30 уже не проблема. Если надо больше места, подключаются отдельные диски и символьными ссылками расширяются проблемные места.</p>



<p>С таким подходом удобно бэкапить виртуальные машины. Я на уровне гипервизоров делаю бэкап только системных дисков. Для данных использую другие способы, например&nbsp;rsync. Иногда и то, и другое. Бэкапить только гипервизором огромные диски по несколько ТБ данных не удобно. А в некоторых случаях практически невозможно, так как нет возможности сделать инкрементный бэкап. Например, в proxmox мне не известен способ централизованного управления и создания инкрементных бэкапов. Для других гипервизоров какие-то решения есть.</p>



<h2 class="wp-block-heading">Подготовка нового сервера</h2>



<p>В данном случае не имеет принципиального значения, переносите вы старый сервер на новое место, или готовите новый обновленный почтовый сервер. Основная проблема все равно с переносом базы, ее и надо отдельно решать. Если просто переносите старый сервер, то перенесите на новое место системный диск. Если это другой гипервизор, то убедитесь, что система нормально стартует в новом гипервизоре. Обновите утилиты интеграции, убедитесь, что определены сетевые карты, корректы записи в fstab. В общем, проверьте все, чтобы система стабильно работала.</p>



<p>Тут важно не торопиться и все проверить тщательно. У меня была ситуация, когда после переноса почтового сервера с одного гипервизора на другой, на сервере стало очень сильно убегать вперед время. Буквально на 1-2 минуты в час. Я это сразу не заметил, не обратил внимание. А когда запустил в работу новый сервер, увидел, что к концу рабочего дня время убежало уже на 15 минут. Синхронизация тут не спасала, так как dovecot, замечая большие изменения во времени после синхронизации, просто аварийно завершал работу. Для него это типовое поведение в таком случае.</p>



<p>Было очень неприятно словить такую ошибку на рабочем сервере. Потом в итоге разобрался, в чем дело. Изменил настройки grub для данной виртуалки, связанные с прерываниями процессора, и время перестало убегать. Но это потребовало тестов и перезагрузок уже на рабочем сервере, что было неудобно. Лучше бы я все отладил с самого начала, благо время было. Я все это к тому, что не торопитесь с переносом. После того, как поднимите систему на новом железе, оставьте ее поработать некоторое время, убедитесь, что все в порядке.</p>



<p>Как я уже сказал, не важно, переносите вы текущий сервер или настраиваете новый. Если новый &#8212; то так же настройте все, отладьте, проверьте. Дальше назначьте какие-то ip адреса новому серверу, чтобы был сетевой доступ к старому. Если переносите старый сервер, не забудьте на новом месте сменить MAC и IP адрес у сетевого интерфейса. Бывало, что я забывал сменить MAC. Начинались непонятные сетевые проблемы с обрывами соединений. Не сразу догадался, в чем было дело.</p>



<p>Когда все готово, оба сервера работают и видны в сети, можно переходить к переносу почтовой базы.</p>


</br>



<h2 class="wp-block-heading">Перенос почтовой базы</h2>



<p>Перед переносом почтовой базы, я рекомендую выполнить ее&nbsp;очистку. Зачастую в почте хранится огромное количество не нужной информации. Чтобы сократить время переноса почты, лучше заранее ее почистить. После того, как это сделаете, приступайте к переносу.</p>



<p>Для этого на новом сервере подключите и смонтируйте новый диск, где будете хранить почту. Дальше без остановки старого сервера выполните синхронизацию каталогов с базой. Я обычно использую&nbsp;<strong>rsync</strong>&nbsp;для этого. Вот простой пример команды, которую запускаю с нового сервера.</p>



<pre class="wp-block-preformatted">#&nbsp;/usr/bin/rsync -av root@10.1.4.22:/data/mail /data</pre>



<p>Здесь мы просто копируем почтовый архив со старого сервера 10.1.4.22 из директории&nbsp;<em>/data/mail</em>&nbsp;на новый сервер в эту же директорию. Не ошибитесь со слешами в конце путей. Я иногда путаюсь, после запуска сразу останавливаю процесс и проверяю, что все копируется именно оттуда и именно туда, куда надо. Чтобы команда точно отработала даже при обрыве ssh соединения, запускаю ее в&nbsp;<strong>screen</strong>.Копирование почтовой базы лучше запустить в самое наименее нагруженное время, хотя и не обязательно. Важно не пересечься с временем планового бэкапа. Бывает, запланируешь перенос на ночь, запускаешь копирование, а оно совпадает с плановым бэкапом. В итоге оба задания жутко тормозят. При этом еще и сам сервер работает медленно.</p>



<p>Копирование огромного количества файлов почтовых писем длится значительное время. Редко меньше нескольких часов. Иногда за ночь не успеваешь все скопировать, днем останавливаешь, а ночью продолжаешь. Можно растянуть этот процесс на любое время, если нет спешки. Нам важно перенести основную массу писем не останавливая сервер.</p>



<p>После того, как скопировали основную часть почтового архива, переходим к переключению на новый сервер.</p>



<h2 class="wp-block-heading">Переключение на новый сервер</h2>



<p>Самый важный и ответственный этап переноса почтового сервера. Здесь нужно еще раз хорошенько все проверить, убедиться, что все работает нормально. Непосредственно перед переключением на новый сервер, можно еще раз накатить изменения почтовой базы без остановки старого. Это позволит максимально уменьшить время простоя. Когда все готово, останавливаем службы dovecot и postfix почтового сервера. После этого сразу же запускаем синхронизацию каталогов между старым и новым сервером. Мы накатываем все изменения почтовой базы, делая ее полностью актуальной в новом сервере. Для этого надо добавить ключ &#8212;delete к rsync.</p>



<pre class="wp-block-preformatted">#&nbsp;/usr/bin/rsync --delete -av root@10.1.4.22:/data/mail /data</pre>



<p>Важно не перепутать источник с приемником. Сначала идет старый сервер, потом новый. Перед запуском хорошенько проверяйте команды. Один раз я угробил новый сервер, ошибившись в команде и удалив с корня системы некоторые каталоги. Просто слешом ошибся на источнике, когда копировал в корень приемника. Это было не страшно, так как повредил новый сервер. Пришлось отложить перенос и восстановить его.</p>



<p>Ждёте окончания синхронизации. Она должна быть не долгой, так как перед остановкой почтового сервера вы и так накатили все изменения. Обычно несколько минут занимает процесс финального копирования. Когда он закончен, выключаете старый сервер, убираете его из автозагрузки гипервизора. На новом сервере меняете IP на адреса старого сервера и перезагружаете его. Можно и не перезагружать, но я для проверки всегда перезагружаю. Можно не менять IP адрес, если у вас все завязано на dns имена, отредактируйте dns запись. Но я обычно все же меняю ip, так надежнее. Обязательно найдется какое-нибудь старое оборудование, типа сканера, где адрес указан в виде ip адреса и т.д. Эти лишние проблемы потом не нужны. Лучше все сделать максимально незаметно и надежно.</p>



<p>После запуска нового сервера, убедитесь, что все службы работают, почта ходит, мониторинг не показывает проблем. Если все прошло гладко и по плану, то время простоя будет несколько минут. В ночное время этого могут и не заметить.</p>


</br>



<p>Бывает, что не все идет гладко. У меня были ситуации, когда после перехода уже на новый сервер, начинались проблемы, которые предусмотреть заранее было нельзя. Новое хранилище начинало тормозить или возникали еще какие-то проблемы. Например, с блокировками на nfs. Вы это не проверили заранее. С работой dovecot на nfs есть свои&nbsp;нюансы. Если вы понимаете, что оставить в работе новый сервер нельзя и надо откатываться, то нужно опять синхронизировать почтовую базу, если для вас важна та корреспонденция, которая была доставлена в то время, как поработал новый сервер. Для этого останавливаете почтовые службы на новом сервере, меняете на нем ip, запускаете старый и выполняете синхронизацию в обратном порядке &#8212; с нового на старый. Не ошибитесь в параметрах rsync! После этого оставляете старый сервер в работе, а с новым спокойно разбираетесь и готовите его еще раз к переносу.</p>



<p>Вот, в принципе, и все по переносу почтового сервера из моей практики. Я их переносил штук 10 за все время админства. Можно сказать руку набил.</p>



<p>Для того, чтобы любые работы на prod сервере прошли успешно, я всегда соблюдаю несколько правил:</p>



<ol><li>Никогда не тороплюсь. Если реально нет необходимости спешить, я всегда довожу до руководства, что спешка не нужна. Она вредит и мешает все сделать хорошо. Пусть лучше я спокойно неделю или две подготовлюсь, все обдумаю, проверю и перенесу без проблем, нежели я буду спешить для соблюдения бессмысленных сроков.</li><li>Тщательно все проверяю и перепроверяю. Делаю все максимально незаметно. Если простой ожидается маленький, не шлю никому никаких уведомлений. Если вы предупредите, что будут работы с почтовым сервером, на следующие дни обязательно кто-то нажалуется, что после переноса все сломалось. Это мешает снимать реальные обратные связи. Когда никто не знает о переносе, отзывы будут только на реальные проблемы, а не надуманные.</li><li>У меня всегда есть запасной план на случай, если что-то пойдет не так. Всегда под рукой актуальные бэкапы и подменные системы. Я точно знаю, что буду делать, если новый сервер не будет введен в эксплуатацию.</li></ol>



<p>Этого достаточно, чтобы успешно проводить любые работы на серверах. Главное, все запланировать заранее, чтобы не было спешки.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-postfix/">Перенос почтового сервера postfix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-postfix/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Запрет писем с поддельным полем From или спам от себя к себе в postfix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b7%d0%b0%d0%bf%d1%80%d0%b5%d1%82-%d0%bf%d0%b8%d1%81%d0%b5%d0%bc-%d1%81-%d0%bf%d0%be%d0%b4%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d0%b5%d0%bc-from-%d0%b8%d0%bb%d0%b8-%d1%81/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b7%d0%b0%d0%bf%d1%80%d0%b5%d1%82-%d0%bf%d0%b8%d1%81%d0%b5%d0%bc-%d1%81-%d0%bf%d0%be%d0%b4%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d0%b5%d0%bc-from-%d0%b8%d0%bb%d0%b8-%d1%81/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 27 Jul 2020 05:28:29 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[Почтовый сервер]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1324</guid>

					<description><![CDATA[<p>Последнее время активизировался спам с поддельным полем From. Если на вашем сервере не настроены различные ограничения по приему почты, то</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b7%d0%b0%d0%bf%d1%80%d0%b5%d1%82-%d0%bf%d0%b8%d1%81%d0%b5%d0%bc-%d1%81-%d0%bf%d0%be%d0%b4%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d0%b5%d0%bc-from-%d0%b8%d0%bb%d0%b8-%d1%81/">Запрет писем с поддельным полем From или спам от себя к себе в postfix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Последнее время активизировался спам с поддельным полем From. Если на вашем сервере не настроены различные ограничения по приему почты, то это может стать проблемой. Я обычно настраиваю ограничения с помощью стандартных&nbsp;restrictions в postfix. Но вот с подделкой поля from упустил момент, сейчас исправлю.</p>


</br>



<p>Сподвигло меня к разбору этой ситуации огромное количество спама примерно следующего содержания:</p>



<pre class="wp-block-preformatted">I greet you!

I have bad news for you.
06/28/2018 - on this day I hacked your operating system and got full access to your account eme@eme.ru
On that day your account (eme@eme.ru) password was: gyhbtj5pq6b

It is useless to change the password, my malware intercepts it every time.

How it was:
In the software of the router to which you were connected that day, there was a vulnerability.
I first hacked this router and placed my malicious code on it.
When you entered in the Internet, my trojan was installed on the operating system of your device.

After that, I made a full dump of your disk (I have all your address book, history of viewing sites, all files, phone numbers and addresses of all your contacts).

A month ago, I wanted to lock your device and ask for a small amount of money to unlock.
But I looked at the sites that you regularly visit, and came to the big delight of your favorite resources.
I'm talking about sites for adults.

I want to say - you are a big pervert. You have unbridled fantasy!

After that, an idea came to my mind.
I made a screenshot of the intimate website where you have fun (you know what it is about, right?).
After that, I took off your joys (using the camera of your device). It turned out beautifully, do not hesitate.

I am strongly belive that you would not like to show these pictures to your relatives, friends or colleagues.
I think $971 is a very small amount for my silence.
Besides, I spent a lot of time on you!

I accept money only in Bitcoins.
My BTC wallet: 15ZHnf1MPn6ybb8yUeAoCQ1AJtiKhg3NrP

You do not know how to replenish a Bitcoin wallet?
In any search engine write "how to send money to btc wallet".
It's easier than send money to a credit card!

For payment you have a little more than two days (exactly 50 hours).
Do not worry, the timer will start at the moment when you open this letter. Yes, yes .. it has already started!

After payment, my virus and dirty photos with you self-destruct automatically.
Narrative, if I do not receive the specified amount from you, then your device will be blocked, and all your contacts will receive a photos with your "joys".

I want you to be prudent.
- Do not try to find and destroy my virus! (All your data is already uploaded to a remote server)
- Do not try to contact me (this is not feasible, I sent you an email from your account)
- Various security services will not help you; formatting a disk or destroying a device will not help either, since your data is already on a remote server.

P.S. I guarantee you that I will not disturb you again after payment, as you are not my single victim.
 This is a hacker code of honor.

From now on, I advise you to use good antiviruses and update them regularly (several times a day)!

Don't be mad at me, everyone has their own work.
Farewell.</pre>



<p>Смысл письма в том, что человек якобы взломал ваш компьютер и следил за вами. Наследил там чего-то важного по посещаемым сайтам и через веб камеру и теперь грозится это обнародовать. Расчет на то, как я понял, что человек по порнографическим сайтам лазил. Для убедительности, в письме приложен пароль, взятый из какой-то публичной базы данных слитых учеток. Сейчас таких баз полно. Пароли могут быть реальными!!! Один человек сказал, что знает этот свой пароль, но только он не от почты, а использовался на сайте booking.com.</p>



<p>В письме используется поддельный адрес From, для того, чтобы письмо выглядело якобы отправленное с вашей учетки, что должно подтверждать реальность угроз. В общем, подход системный получился. Конечно, все это подделка и развод. Я решил сберечь нервы пользователей и каким-то образом оградить людей от подобных писем. С помощью postfix это сделать очень просто. Базовые методы борьбы со спамом я уже подробно расписывал в отдельном разделе в статье по&nbsp;<a href="https://serveradmin.ru/nastroyka-postfix-dovecot-centos-8/" target="_blank" rel="noreferrer noopener">настройке postfix</a>. Но текущая ситуация там не учитывается. Сейчас исправим это.</p>


</br>



<p>Для начала давайте проверим, реально ли на ваш почтовый сервер отправить письмо с поддельным полем From. Для этого подключимся к нему по Telnet и попробуем вручную выполнить отправку.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2018/11/postfix-from-01.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2018/11/postfix-from-01.png" alt="Проверка почтового сервера через telnet" class="wp-image-7249"/></a></figure></div>



<p>Список команд, которые я вводил:</p>



<pre class="wp-block-preformatted">telnet mx.eme.ru 25
helo yandex.ru
mail from:&lt;zva@eme.ru&gt;
rcpt to:&lt;zva@eme.ru&gt;
data
Test
.
quit</pre>



<p>Я использовал поддельные данные в поле helo, представившись yandex.ru и дальше отправил тестовое письмо. Сервер его принял и успешно доставил в ящик. Вот исходный текст этого письма.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2018/11/postfix-from-03.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2018/11/postfix-from-03.png" alt="Исходный текст письма с поддельным полем From" class="wp-image-7251"/></a></figure></div>



<p>Обратите внимание, что используется антиспам&nbsp;Kaspersky Security 8.0 for Linux Mail Server. Но у него настроен белый список на адреса исходного домена. Получается, что антивирус так же проверяет поле From, которое подделано, и не защищает пользователей от таких писем.</p>



<p>Для того, чтобы запретить отправку писем с левых почтовых серверов, которые ставят в поле From наш домен, необходимо добавить еще одну проверку в раздел&nbsp;<strong>smtpd_sender_restrictions</strong>&nbsp;следующим образом:</p>



<pre class="wp-block-preformatted">smtpd_sender_restrictions =	permit_mynetworks,
				permit_sasl_authenticated,
				reject_authenticated_sender_login_mismatch,
				reject_unknown_sender_domain,
				reject_non_fqdn_sender,
				reject_unlisted_sender,
				reject_unauth_destination,
				<strong>check_sender_access hash:/etc/postfix/sender_access</strong></pre>


</br>



<p>К существующим ограничениям я добавил еще одно в самый конец. Создадим указанный файл&nbsp;sender_access со следующим содержимым.</p>



<pre class="wp-block-preformatted">#&nbsp;mcedit /etc/postfix/sender_access
eme.ru REJECT You are not eme.ru
# postmap /etc/postfix/sender_access</pre>



<p>Всем, кто захочет отправить нам письмо с доменом нашего сервера, мы будем выдавать ошибку и отвечать, что вы это не мы <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Перечитываем конфигурацию postfix:</p>



<pre class="wp-block-preformatted"># postfix reload</pre>



<p>Теперь попробуем еще раз через telnet отправить письмо с полем From из нашего домена.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2018/11/postfix-from-02.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2018/11/postfix-from-02.png" alt="Запрет подделки From" class="wp-image-7250"/></a></figure></div>



<p>Сервер выдал ошибку 554. В логе почтового сервера будет следующая строка:</p>



<pre class="wp-block-preformatted">Nov  7 17:59:45 ememail postfix/smtpd[17430]: NOQUEUE: reject: RCPT from broadband: 554 5.7.1 &lt;zva@eme.ru&gt;: Sender address rejected: You are not eme.ru; from=&lt;zva@eme.ru&gt; to=&lt;zva@eme.ru&gt; proto=SMTP helo=yandex.ru</pre>


</br>



<p>Все, больше ни один отправитель не сможет использовать в поле From наш домен. Вообще странно, что изначально это возможно. Протокол smtp давно пора как-то изменить, чтобы раз и навсегда защитить его от спама. На него нагородили уже столько костылей, но ничего не помогает.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b7%d0%b0%d0%bf%d1%80%d0%b5%d1%82-%d0%bf%d0%b8%d1%81%d0%b5%d0%bc-%d1%81-%d0%bf%d0%be%d0%b4%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d0%b5%d0%bc-from-%d0%b8%d0%bb%d0%b8-%d1%81/">Запрет писем с поддельным полем From или спам от себя к себе в postfix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b7%d0%b0%d0%bf%d1%80%d0%b5%d1%82-%d0%bf%d0%b8%d1%81%d0%b5%d0%bc-%d1%81-%d0%bf%d0%be%d0%b4%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d0%b5%d0%bc-from-%d0%b8%d0%bb%d0%b8-%d1%81/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Очистка и обслуживание почтовой базы postfix</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%be%d1%87%d0%b8%d1%81%d1%82%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%81%d0%bb%d1%83%d0%b6%d0%b8%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b9-%d0%b1%d0%b0%d0%b7%d1%8b-pos/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%be%d1%87%d0%b8%d1%81%d1%82%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%81%d0%bb%d1%83%d0%b6%d0%b8%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b9-%d0%b1%d0%b0%d0%b7%d1%8b-pos/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 27 Jul 2020 05:26:58 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[почта]]></category>
		<category><![CDATA[Почтовый сервер]]></category>
		<category><![CDATA[Сервер]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1321</guid>

					<description><![CDATA[<p>Мне приходится много работать с почтовыми серверами на базе postfix с базой почты формата maildir. За несколько лет работы накопилось</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%be%d1%87%d0%b8%d1%81%d1%82%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%81%d0%bb%d1%83%d0%b6%d0%b8%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b9-%d0%b1%d0%b0%d0%b7%d1%8b-pos/">Очистка и обслуживание почтовой базы postfix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Мне приходится много работать с почтовыми серверами на базе postfix с базой почты формата maildir. За несколько лет работы накопилось множество различных приемов по оптимизации работы и настройке. Сегодня решил собрать в кучу все более ли менее универсальные и полезные скрипты по автоматической очистке почтовой базы в postfix.</p>



<h2 class="wp-block-heading">Введение</h2>


</br>



<p>Данная статья будет актуальна для тех, кто сам выполнил&nbsp;установку и настройку postfix&nbsp;или воспользовался готовой сборкой на базе&nbsp;iredmail. Это что касается материалов моего сайта. А в целом все описанное ниже будет актуально для любого почтового сервера, который хранит почту в формате&nbsp;<strong>maildir</strong>.</p>



<p>Скажу пару слов, почему именно <a href="https://ru.wikipedia.org/wiki/Maildir" target="_blank" rel="noreferrer noopener nofollow">maildir</a>. Лично я этот формат использую за его удобство. В нем каждое письмо это отдельный файл, который можно посмотреть любым текстовым редактором. Эти файлы удобно бэкапить, анализировать содержимое, сортировать по каким-то признакам. В общем, с ними можно работать как с обычными текстовыми файлами. На основе этих плюсов и выполняется вся дальнейшая работа в статье. Из минусов вижу только один &#8212; огромное количество мелких файлов создают большую нагрузку на дисковую подсистему.</p>



<p>Приведу для наглядности пример, который позволит оценить нагрузку на диски. Для синхронизации с помощью rsync почтовой базы объемом примерно 1 терабайт, расположенной на raid10 обычных 3.5 sata дисков, на одиночный такой же диск для бэкапа, уходит где-то пару часов в основном на сравнение файлов между источником и приемником. Само копирование файлов проходит быстро, но чтобы сравнить изменения за день, приходится выполнять длительную операцию. При этом в целом работа пользователей (~30-40 человек) с этой базой вполне комфортна, каких-то тормозов не наблюдается.</p>



<p>То есть по сути, для такого количества пользователей, сервером может быть обычный десктопный компьютер с 2-4 обычными sata дисками. Хватит производительности любого процессора и примерно 2-4 гигабайта оперативной памяти. Отдельный вопрос, конечно, к надежности обычного системника. Я сервера на них не рекомендую собирать, но при большом желании можно.Приведенные далее скрипты для очистки почтовой базы писались в разное время на разных серверах. Иногда может показаться, что все сделано нелогично или как-то сложно. Громоздкие конструкции часто возникали там, где появлялись проблемы с пробелами или спецсимволами в именах папок на русском языке, которые при переводе в UTF-7 (кодировка названия imap папок в dovecot) превращаются в весьма неудобные для обработки строки. Дальше будет понятно, что я имею ввиду.</p>



<p>Перейдем теперь к конкретным примерам.</p>



<h2 class="wp-block-heading">Простое удаление старых писем из ящика</h2>



<p>Начнем с самого простого примера. Допустим, у вас есть какой-то ящик, хранить письма в котором старше определенного срока не имеет смысла. К примеру, это может быть ящик для оповещений системы мониторинга. После того, как оповещение было прочитано, оно теряет актуальность. Все события и так фиксируются и хранятся на самом сервере, поэтому хранить долго письма нет никакого смысла. Очистим этот ящик, удалив из него все письма, старше 30 дней.</p>



<pre class="wp-block-preformatted">/usr/bin/find /data/mail/virtual/zabbix@mailsrv.ru/Maildir/*/ -type f -mtime +30 -exec rm {} \;</pre>



<figure class="wp-block-table"><table><tbody><tr><td>/usr/bin/find</td><td>Путь до утилиты find. Проверьте его актуальность в своем дистрибутиве.</td></tr><tr><td>/data/mail/virtual/reports@eme.ru/Maildir/*/</td><td>Путь до конкретного ящика. Конструкция /*/ позволяет сразу проверить обе папки new и cur.</td></tr><tr><td>-type f</td><td>Говорим find, что ищем только файлы.</td></tr><tr><td>-mtime +30</td><td>Указываем срок более 30 дней с последнего изменения файла. То есть все файлы старше 30-ти дней.</td></tr><tr><td>-exec rm {} \;</td><td>Выполняем удаление.</td></tr></tbody></table></figure>


</br>



<p>В данном случае мы просто используем стандартный синтаксис утилиты для поиска файлов&nbsp;<strong>find</strong>. Подробности ее использования можно найти в интернете, примеров масса. Во время отладки я рекомендую не использовать удаление, а просто направить вывод в файл, чтобы можно было оценить, что утилита нашла и собирается удалить. В простых примерах, как этот, может показаться, что нет смысла проверять, но в более сложных конструкциях рекомендую всегда это делать, например, вот так.</p>



<pre class="wp-block-preformatted">/usr/bin/find /data/mail/virtual/zabbix@mailsrv.ru/Maildir/*/ -type f -mtime +30 &gt;&gt; /root/dellist.txt</pre>



<p>После этого смотрите файл&nbsp;<em>/root/dellist.txt</em>&nbsp;и проверяйте, что собираетесь удалить. После того, как проверили, не обязательно заново выполнять поиск по базе и лишний раз нагружать диски. Можно удалить все указанные в&nbsp;<em>dellist.txt</em>&nbsp;письма следующим скриптом.</p>



<pre class="wp-block-preformatted">#!/bin/bash

cat /root/dellist.txt | while read i ; do 
rm -f "$i" 
done</pre>



<p>Сам процесс поиска по почтовой базе postfix не такой длительный, как поиск и удаление. На сильно нагруженных базах я рекомендую выполнять удаление, когда сервер нагружен меньше всего, а поиск в любое время. Конечно, искать тоже лучше в нерабочее время, но мне не нравится работать ночью, поэтому все, что можно, я делаю днем, а на ночь оставляю по возможности минимум работы.</p>



<h2 class="wp-block-heading">Массовая очистка корзин в почтовой базе postfix</h2>



<p>Рассмотрим более сложный пример. Нам нужно автоматически очистить все корзины пользователей от писем, старше 30-ти дней. Я рекомендую всегда настраивать такую очистку. Дело в том, что если сервер сильно нагружен, то он не всегда корректно удаляет содержимое корзины. Например, пользователь отправил в корзину очень много писем (десятки тысяч), нажал &#171;очистить корзину&#187; и закрыл почтовый imap клиент. Есть вероятность, что реально письма не удалятся, а так и будут висеть в корзине. Imap сервер dovecot не удаляет мгновенно письма, а ставит их в очередь и потихоньку удаляет. Иногда этот процесс прерывается и удаление не происходит. Можно попытаться это сделать снова и рано или поздно они таки удалятся.</p>



<p>Есть пользователи, которые сами не чистят корзины, за годы работы у них накапливается там солидное количество бесполезных писем, которые только занимают место на сервере и замедляют работу тех же бэкапов или скриптов очистки. Надо помочь расстаться с этой почтой раз и навсегда.</p>



<p>Сложность с очисткой корзин в том, что названий папок для удаленной почты может быть много. Каждый почтовый клиент создает какую-то свою папку, имя которой может не совпадать с уже существующими. Сейчас могут использоваться одновременно 3 вида почтовых клиентов: web, десктопная или мобильная программа. Каждая из них создает свой набор папок. Ко всему прочему, русские имена imap папок хранятся в кодировке UTF-7, что осложняет работу скриптов. Необходимо экранировать спецсимволы и пробелы.</p>


</br>



<p>Вот мой список возможных названий папок для удаленной почты.</p>



<figure class="wp-block-table"><table><tbody><tr><td>Удаленные</td><td>.&amp;BCMENAQwBDsENQQ9BD0ESwQ1-</td></tr><tr><td>Удаленные элементы</td><td>.&amp;BCMENAQwBDsENQQ9BD0ESwQ1- &amp;BE0EOwQ1BDwENQQ9BEIESw-</td></tr><tr><td>Корзина</td><td>.&amp;BBoEPgRABDcEOAQ9BDA-</td></tr><tr><td>Deleted Messages</td><td>.Deleted Messages</td></tr><tr><td>Deleted Items</td><td>.Deleted Items</td></tr><tr><td>Trash</td><td>.Trash</td></tr></tbody></table></figure>



<p>Я обычно выполняю поиск по такому набору папок. Если у вас есть дополнение этого списка, прошу поделиться. А вот скрипт для автоматической очистки корзин с указанными именами папок.</p>



<pre class="wp-block-preformatted">#!/bin/bash

# текущая дата в формате Год-месяц-день
data=`date +"%Y-%m-%d"`
# формируем список почтовых ящиков для поиска
mailbox=`ls -l /data/mail/virtual | grep vmail | awk '{print $9}'`

for box1 in $mailbox
    do
	/usr/bin/find /data/mail/virtual/$box1/Maildir/'.&amp;BCMENAQwBDsENQQ9BD0ESwQ1-'/*/ -type f -mtime +30 | while read a ; do
	ls "$a" &gt;&gt; /root/mailclean/trashclean-log/$data.txt
	done
    done

for box2 in $mailbox
    do
	/usr/bin/find /data/mail/virtual/$box2/Maildir/'.Deleted Messages'/*/ -type f -mtime +30 | while read b ; do
	ls "$b" &gt;&gt; /root/mailclean/trashclean-log/$data.txt
	done
    done

for box3 in $mailbox
    do
	/usr/bin/find /data/mail/virtual/$box3/Maildir/.Trash/*/ -type f -mtime +30 | while read c ; do
	ls "$c" &gt;&gt; /root/mailclean/trashclean-log/$data.txt
	done
    done

for box4 in $mailbox
    do
	/usr/bin/find /data/mail/virtual/$box4/Maildir/'.&amp;BCMENAQwBDsENQQ9BD0ESwQ1- &amp;BE0EOwQ1BDwENQQ9BEIESw-'/*/ -type f -mtime +30 | while read d ; do
	ls "$d" &gt;&gt; /root/mailclean/trashclean-log/$data.txt
	done
    done

for box5 in $mailbox
    do
	/usr/bin/find /data/mail/virtual/$box5/Maildir/'.&amp;BBoEPgRABDcEOAQ9BDA-'/*/ -type f -mtime +30 | while read e ; do
	ls "$e" &gt;&gt; /root/mailclean/trashclean-log/$data.txt
	done
    done

for box6 in $mailbox
    do
	/usr/bin/find /data/mail/virtual/$box6/Maildir/'.Deleted Items'/*/ -type f -mtime +30 | while read f ; do
	ls "$f" &gt;&gt; /root/mailclean/trashclean-log/$data.txt
	done
    done

cat /root/mailclean/trashclean-log/$data.txt | while read i ; do
    rm -f "$i"
    done</pre>



<p>Конечно, тут для компактности можно было сделать еще один вложенный цикл и перебирать имена папок. Я не стал этого делать для наглядности. К тому же список небольшой, можно оставить так. Некоторые комментарии к скрипту.</p>


</br>



<p>Конструкция</p>



<pre class="wp-block-preformatted">mailbox=`ls -l /data/mail/virtual | grep vmail | awk '{print $9}'`</pre>



<p>формирует список ящиков для очистки. В данном случае берутся все существующие ящики.&nbsp;<strong>vmail</strong>&nbsp;тут владелец директорий с ящиками. Получить список актуальных ящиков можно разными способами. Я сделал это вот так. Вы можете вручную составить список ящиков в текстовом файле в формате один ящик в каждой новой строке и работать по своему списку. Примерно вот так:</p>



<pre class="wp-block-preformatted">mailbox=/root/mailclean/mailboxlist.txt</pre>



<p>Возможно путь к файлу нужно взять в кавычки, сейчас точно не помню, надо проверять. Я логирую списки удаленных писем на всякий случай, чтобы можно было из архива быстро восстановить удаленные письма, если вдруг это будет необходимо. Во время отладки я рекомендую закомментировать последний этап работы скрипта, где выполняется удаление. Для начала просто сформируйте списки файлов на удаление и убедитесь, что там не попало ничего лишнего, что поиск по папкам прошел корректно.</p>



<p>Аналогичным образом можно очистить папки со спамом. Вот мой список для таких папок.</p>



<figure class="wp-block-table"><table><tbody><tr><td>Нежелательная почта</td><td>.&amp;BB0ENQQ2BDUEOwQwBEIENQQ7BEwEPQQwBE8- &amp;BD8EPgRHBEIEMA-</td></tr><tr><td>Spam</td><td>.Spam</td></tr><tr><td>Junk E-mail</td><td>.Junk E-mail</td></tr><tr><td>Junk</td><td>.Junk</td></tr></tbody></table></figure>



<p>Более подробно вопрос автоматического удаления спама рассмотрим отдельно.</p>



<h2 class="wp-block-heading">Удаление писем на основе содержимого письма</h2>



<p>Перейдем к еще более сложному примеру, но в самой простой его модификации. Допустим, вам нужно удалить все письма, адресованные на какой-то адрес. Это может быть актуально в тех случаях, если используется алиас, а с него идет перенаправление на множество ящиков. В итоге, письма, адресованные на этот алиас распространяются по всей почтовой базе в разные ящики. При этом данные письма теряют актуальность со временем, и хранить их нет необходимости.</p>


</br>



<p>В данном примере я сделаю еще одно усложнение. Мало того, что мы будем логировать все удаления писем из базы, мы еще будем их сохранять и раскладывать по папкам с названиями ящиков, из которых они были удалены. Дополнительно, удаленные письма будут складываться в директории с именами в виде даты удаления. Таким образом мы полностью застрахуем себя от удаления нужного письма. Даже если это произойдет, то быстро сможем найти это удаленное письмо. Дополнительно будем записывать в лог файл время начала и завершения поиска и удаления. Так как процесс поиска по содержимому достаточно длительный, рекомендую следить за временем его выполнения, чтобы укладываться в окна с малой нагрузкой сервера.</p>



<pre class="wp-block-preformatted">#!/bin/bash

# формируем список ящиков для очистки
mailbox=`ls -l /data/mail/virtual | grep vmail | awk '{print $9}'`
# дата в формате Год-месяц-день_час-минута-секунда
data_full=`date +"%Y-%m-%d_%H-%M-%S"`
# дата в формате Год-месяц-день
data=`date +"%Y-%m-%d"`
# директория для хранения копий удаленных писем
copydir=/backup/mailclean
# адрес лог файла с информацией о времени работы скрипта
logfile=/backup/mailclean/log.txt

echo "============`date +"%Y-%m-%d"`============" &gt;&gt; $logfile
echo "`date +"%H-%M-%S"` Start mail clean" &gt;&gt; $logfile

for box in $mailbox
    do
    # создаем директории с именами ящиков и текущей даты для копий удаленных писем
    mkdir -p $copydir/$box/mail/$data
    # формируем список всех писем в ящике
    /usr/bin/find /data/mail/virtual/$box/Maildir -type f -name "*mailsrv*" -mtime +30 -daystart | while read a ; do
    # ищем в содержимом письма адрес получателя zabbix@mailsrv.ru и записываем имена таких писем в индивидуальный файл для каждого ящика
        grep -E -R -l -I "*for &lt;zabbix@mailsrv.ru&gt;;*" "$a" &gt;&gt; $copydir/$box/copy-$data_full.txt
        done
    # пишем название ящика в общий лог файл
    echo "=========$box=========" &gt;&gt; $copydir/$data_full-all.txt
    # записываем в общий лог файл все удаленные письма каждого ящика за конкретную дату очистки	
    cat $copydir/$box/copy-$data_full.txt &gt;&gt; $copydir/$data_full-all.txt
    # формируем список писем ящика на удаление	
    cat $copydir/$box/copy-$data_full.txt | while read i ; do
    # копируем письмо из реального ящика в папку архива (рекомендую использовать во время отладки)
        cp -p "$i" $copydir/$box/mail/$data
    # перемещаем письмо из реального ящика в архив (использовать после отладки)
    #   mv "$i" $copydir/$box/mail/$data
        done
    done
# записываем время завершения работы скрипта
echo "`date +"%H-%M-%S"` End mail clean" &gt;&gt; $logfile
echo "==================================" &gt;&gt; $logfile</pre>



<p>Поясню основные моменты. В строке с поиском писем по всему ящику есть маска:</p>



<pre class="wp-block-preformatted">/usr/bin/find /data/mail/virtual/$box/Maildir -type f -name <strong>"*mailsrv*"</strong> -mtime +30 -daystart | while read a ; do</pre>



<p>В данном случае mailsrv это часть имени сервера. В формате maildir в именах файлов писем всегда присутствует имя сервера. Эта маска позволяет найти только файлы почты, отбросив остальные служебные файлы, которые могут там быть. А они там точно будут, например, индексы dovecot, правила sieve и др. Не забудьте поменять эту маску на свою в соответствии с именем сервера.</p>



<p>Строка для поиска получателя письма&nbsp;<strong>*for &lt;zabbix@mailsrv.ru&gt;;*</strong>&nbsp;именно в таком видевзята из служебных заголовков. Даже если письма различными фильтрами будут перемещаться в другие ящики, первоначальный получатель писем все равно будет зафиксирован этой строкой.Предупреждаю, что не нужно слепо использовать этот и другие скрипты. Они приведены в основном для того, чтобы показать принципы и идеи, которые я использую. Эти скрипты нужно внимательно посмотреть, понять, что происходит в каждой строке, и изменить под свои нужды. В готовом виде вряд ли вам нужен будет именно такой скрипт. Тут все очень индивидуально и требует осознания всех выполняемых действий.</p>



<p>Если вам нужно автоматом удалить в почтовом архиве все спам письма, которые ваша антиспам система помечает как спам, то можете взять служебный заголовок, который ставит эта система и использовать его. Например, Касперский антиспам вот так помечает все спамовые письма:</p>



<pre class="wp-block-preformatted">X-KLMS-AntiSpam-Status: spam</pre>


</br>



<p>Соответственно я ищу все письма с таким служебным заголовком и что-то с ними делаю. Например, перемещаю в папку spam или удаляю. Но тут нужно быть внимательным и делать все аккуратно. Например, если какое-то письмо фильтр по ошибке пометил спамом, у пользователя не будет никакой возможности его сохранить, если вы будете автоматически удалять эти письма. Тут нужно думать в конкретной ситуации как поступить. На текущий момент я не использую подобные правила для удаления или перемещения почты, только для поиска, чтобы оценить объем спамовой почты. Если он слишком велик и его чистка позволит высвободить значительные объемы дискового пространства, то я начинаю что-то делать с ящиками пользователей. Чаще всего напрягать админов на местах, чтобы они стимулировали пользователей к самостоятельной ручной очистке спама. Если же спама не много, то я просто ничего не делаю.</p>



<h2 class="wp-block-heading">Фильтрация писем на основе темы письма</h2>



<p>Рассмотрим более сложный вариант предыдущего скрипта. Там мы фильтровали письма на основе содержимого служебных заголовков. Но если мы захотим отфильтровать почту по теме письма, то сходу у нас ничего не получится. С темой письма возникают сложности из-за того, что она закодирована в base64, если в ней используются русский язык. Вот простой пример. У нас есть письмо с темой &#171;Как дела?&#187;. Используем&nbsp;<a href="http://base64.ru/" target="_blank" rel="noreferrer noopener">base64 декодер</a>&nbsp;и смотрим, как будет выглядеть тема сообщения в исходнике письма.</p>



<pre class="wp-block-preformatted">Как дела? -&nbsp;0JrQsNC6INC00LXQu9CwPw==</pre>



<p>А вот, что вы увидите в заголовке письма со всеми служебными добавлениями:</p>



<pre class="wp-block-preformatted">Subject: =?UTF-8?B?0JrQsNC6INC00LXQu9CwPw==?=</pre>



<p>Вам нужно будет отбросить сначала кодировку&nbsp;<strong>=?UTF-8?</strong>, потом не знаю, что означающие символы&nbsp;<strong>B?</strong>, затем в конце еще вот это&nbsp;<strong>?=</strong>. Так вы получаете искомую фразу. Теперь представьте, что кто-то ответит на это письмо. Тема сообщения станет&nbsp;<strong>Re: Как дела?</strong>. В base64 эта фраза будет выглядеть совершенно по-иному:</p>



<pre class="wp-block-preformatted">Re: Как дела?UmU6INCa0LDQuiDQtNC10LvQsD8=</pre>



<p>И вот как в реальном заголовке:</p>



<pre class="wp-block-preformatted">Subject: =?UTF-8?B?UmU6INCa0LDQuiDQtNC10LvQsD8=?=</pre>



<p>Сложность добавляет еще то, что разные почтовые клиенты используют разную кодировку в теме письма. Мне встречались как UTF-8, так и WIN-1251. То есть для того, чтобы нормально раскодировать и читать тему сообщения, вам нужно сделать обработку на декодирование, на отбрасывание служебных символов. Еще в процессе тестирования я заметил, что если вы используете не весь текст темы, а только ее часть, то закодированная строка поиска может немного не совпадать с той, что будет в теме письма. Изменения могут возникнуть из-за заглавных/строчных букв, пробелов, запятых и т.д. В общем, я не осилил эту тему, так как надо очень плотно погрузиться в предмет и написать много различных проверок и условий. У меня просто не хватило терпения все сделать красиво, чтобы скрипт работал надежно.</p>



<p>Поступил я в итоге по-другому, более просто и топорно, зато надежно. Допустим, вам нужно, чтобы какая-то переписка не хранилась на сервере дольше определенного времени. Это может быть конфиденциальная информация. Например, вы сканируете документы с отправкой на почту и вам нужно, чтобы сканы там не хранились бесконечно долго. Настраиваете на МФУ шаблон темы сообщения, добавляя в начало такую строку &#8212;&nbsp;<strong>!del</strong>. Затем переводите его в base64, добавляя еще фразы с Re: и Fwd: на случай, если эти письма могут куда-то пересылаться или писаться ответы. Конечно, сканеру вряд ли кто-то будет отвечать, но, возможно, для вашей темы сообщения это будет актуально.</p>



<figure class="wp-block-table"><table><tbody><tr><td>!del</td><td>IWRlbA==</td></tr><tr><td>Re: !del</td><td>UmU6ICFkZWw=</td></tr><tr><td>Fwd: !del</td><td>RndkOiAhZGVs</td></tr></tbody></table></figure>



<p>Дальше берете скрипт из предыдущего примера и меняете там строку поиска на новую:</p>



<pre class="wp-block-preformatted">grep -E -R -l -I <strong>"Subject:.*IWRlb.*|Subject:.*RndkOiAhZGVs.*|Subject:.*UmU6ICFkZWw.*"</strong> "$a" &gt;&gt; $copydir/$box/copy-$data_full.txt</pre>


</br>



<p>Эта строка найдет во всех письмах, сформированных в список предыдущей командой, темы сообщения !del, Re: !del, Fwd: !del и скопирует пути и имена файлов в список. Потом вы можете на свое усмотрение работать с этим списком.</p>



<h2 class="wp-block-heading">Еще несколько примеров работы с почтовой базой</h2>



<p>Этот пример будет актуален, если вы используете почтовые ящики, куда копируется абсолютно вся переписка вашего сервера. Допустим, у вас есть ящик out@mailsrv.ru, куда сохраняется вся уходящая корреспонденция. Если на сервере идет активная переписка, то писем в ящике будет много и искать с помощью какого-то imap клиента будет неудобно, так как он может либо тормозить на большом списке писем, либо вообще отваливаться по таймауту и поиск или сортировка будут невозможны с его помощью. Тогда на помощь придут простые скрипты в консоли сервера. Найдем в этом ящике все письма, отправленные в период между первым и седьмым сентября 2017 года и скопируем их в отдельный ящик.</p>



<pre class="wp-block-preformatted">find /data/mail/virtual/out@mailsrv.ru/Maildir/*/ -newerBt '2017-09-01 00:00' -and -not -newerBt '2017-09-07 00:00' -and -type f | cpio -pdmv /data/mail/virtual/user@mailsrv.ru/Maildir/new</pre>



<p>По сути тут просто использовались ключи к команде find. У нее их так много, что я для всех прикладных задач всегда храню готовые конструкции, чтобы заново не вспоминать все ключи и возможности.</p>



<p>Еще полезно бывает посмотреть размер почтовых ящиков. Некоторые пользователи имеют в разы больший объем ящика, чем все остальные. Есть любители хранить в почте презентации, пересылать разбитые на части архивы и т.д. Иногда приходится вручную проверять размеры ящиков, чтобы отдать команду на очистку заполненных сверх меры. Сделать это можно простой командой в директории с ящиками:</p>



<pre class="wp-block-preformatted"># du --max-depth=1 | sort -n -r</pre>



<p>Команда выведет размеры всех ящиков и отсортирует их по мере увеличения объема, но при этом объем покажет в байтах, что не очень удобно. Можно вывести директории по алфавиту, но с размером в привычных мегабайтах или гигабайтах, но уже без сортировки.</p>



<pre class="wp-block-preformatted">#&nbsp;du -h --max-depth=1</pre>



<p>Еще удобнее отправить сразу вывод в текстовый файл с датой в имени файла, чтобы потом было удобно сравнить с тем, что получилось после чистки почтовой базы.</p>



<pre class="wp-block-preformatted"># du -h --max-depth=1 &gt;&gt; "dirsize_`date +"%Y-%m-%d_%H:%M"`.txt"</pre>



<p>Тут можно придумать много всяких способов отсортировать данные для более удобного восприятия, или потом автоматически сравнить размеры ящиков. Я не занимался этим.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Поделился тем, что использовал последнее время в работе с почтовыми серверами. По большому счету &#8212; ничего особенного. Почтовые сервера на postfix + dovecot чаще всего не требуют частого присмотра. Работают надежно, не требуют к себе повышенного внимания. Достаточно настроить&nbsp;мониторинг postfix&nbsp;и следить за свободным местом, периодически очищая почтовую базу, которая представляет из себя набор обычных файлов.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%be%d1%87%d0%b8%d1%81%d1%82%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%81%d0%bb%d1%83%d0%b6%d0%b8%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b9-%d0%b1%d0%b0%d0%b7%d1%8b-pos/">Очистка и обслуживание почтовой базы postfix</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%be%d1%87%d0%b8%d1%81%d1%82%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%81%d0%bb%d1%83%d0%b6%d0%b8%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b9-%d0%b1%d0%b0%d0%b7%d1%8b-pos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Выбор почтового сервера для среднего бизнеса — свой или облачный</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b2%d1%8b%d0%b1%d0%be%d1%80-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%81%d1%80%d0%b5%d0%b4%d0%bd%d0%b5%d0%b3%d0%be/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b2%d1%8b%d0%b1%d0%be%d1%80-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%81%d1%80%d0%b5%d0%b4%d0%bd%d0%b5%d0%b3%d0%be/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 18 Jul 2020 22:00:52 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Почтовый сервер]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1200</guid>

					<description><![CDATA[<p>Хочу открыть новый цикл статей, в которых буду делиться информацией и соображениями на различные ИТ темы. В них я не</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b2%d1%8b%d0%b1%d0%be%d1%80-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%81%d1%80%d0%b5%d0%b4%d0%bd%d0%b5%d0%b3%d0%be/">Выбор почтового сервера для среднего бизнеса — свой или облачный</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Хочу открыть новый цикл статей, в которых буду делиться информацией и соображениями на различные ИТ темы. В них я не буду затрагивать вопросы настройки конкретных систем. Последнее время много работал с почтовыми серверами, поэтому решил поделиться своими мыслями на этот счет и порассуждать. Благо есть о чем, так сам еще окончательно не определился, что же лучше — настроить свой сервер или использовать готовые сервисы.</p>


</br>



<h2 class="wp-block-heading">Потребности в почте у среднего бизнеса</h2>



<p>Начнем с того, что я подразумеваю под средним бизнесом. Я&nbsp;не знаю точную классификацию и нигде не смотрел, не проверял. Мне интуитивно кажется, что это от 10-15 пользователей до 200-300. Я же буду рассматривать сегмент&nbsp;<strong>до 100 пользователей</strong>, так как почти все время работаю исключительно в этой нише. Проблемы и потребности более крупных компаний мне достоверно неизвестны. Хотя не уверен, что что-то будет принципиально отличаться от 100 человек, думаю подходы будут те же самые, только железо мощнее. Проблемы распределение нагрузок и кластеризации тут скорее всего еще не будут стоять.</p>



<p>Есть у нас небольшая компания на несколько десятков человек. Нам нужен почтовый сервер. Несмотря на то, что технологии давно шагнули вперед, предоставив массу всевозможных средств коммуникации, электронная почта все равно плотно стоит на своих позициях и не собирается их пока уступать. При этом в таком небольшом коллективе, больших требований к почтовому серверу не предъявляют. Чаще всего достаточно, чтобы почта просто работала, без особых функциональных изысков. Будет достаточно либо почтового клиента и протокола imap, либо web интерфейса. Хорошо, если будет возможность настроить автоответ, делать общие папки, единую адресную книгу, но и без этого можно прожить.</p>



<p>Среди всех возможных вариантов&nbsp;почтового сервиса, я выделяю 3 принципиально разных подхода к реализации необходимого функционала:</p>



<ol><li>Сервисы на основе бесплатных почтовых служб гугла, яндекса или мейл.</li><li>Свой почтовый сервер на основе бесплатного ПО.</li><li>Exchange сервер от Microsoft.</li></ol>



<p>Разберем каждый из них поподробнее.</p>


</br>



<h2 class="wp-block-heading">Бесплатная почта от google, yandex и mail.ru</h2>



<p>Сразу сделаю пару замечаний. Я не уверен, что у гугла сейчас можно зарегистрировать бесплатно корпоративную почту. Все, кто зарегистрировались раньше, пользуются бесплатно, а для новых пользователей теперь доступны только платные подписки. Но это не принципиально и не относится напрямую к теме статьи. Если гугл и стал полностью платным для бизнеса, то просто исключим его из нашего списка. Yandex и Mail.ru пока еще точно бесплатные. Сам я администрировал почтовые домены в google apps и в Яндексе. С biz.mail.ru не работал, только знаю, что там реализовано что-то похожее. Мне как-то сама компания не нравится еще со старых времен. Хотя сейчас они вроде как повернулись лицом к пользователям, но Амиго до сих пор жив здоров, так что повернулись еще не совсем.</p>



<p>Рассмотрим плюсы данных почтовых сервисов.</p>



<ol><li>Самое главное преимущество — полноценная почта готова сразу после регистрации.&nbsp;<strong>Затрат на покупку железа и настройку нет никаких</strong>. Достаточно более ли менее продвинутого пользователя, который по инструкциям на сайте сможет подключить домен и создать почтовые ящики. И почтой уже можно пользоваться.</li><li><strong>Легко администрировать</strong>&nbsp;и управлять пользователями, веб сервис предоставляет все необходимые оснастки для этого. Они удобны и интуитивно (хотя и не всегда) понятны.</li><li><strong>Удобный</strong>&nbsp;и привычный&nbsp;<strong>web интерфейс</strong>. Все работает быстро, из любого места, где есть интернет и браузер. Есть хорошее мобильное приложение.</li><li><strong>Широкий функционал</strong>, готовый сразу после создания ящика. Различные фильтры, сборщики почты, неплохой антиспам (у гугла) и многое другое.</li></ol>



<p>Вроде все, ничего не пропустил. Казалось бы, плюсы очевидны и существенны. Но прежде чем делать выводы, рассмотрим минусы.</p>



<ol><li>Вы не управляете этой почтой.&nbsp;<strong>Она принадлежит не вам</strong>, находится не на ваших серверах. Вы не знаете, что с ней происходит. Если у вас есть очень деликатная и приватная переписка, то возникают подозрения и сомнения насчет использования популярных почтовых служб. Это может показаться паранойей, но этот вопрос реально заботит пользователей и владельцев бизнеса, и его не стоит сбрасывать со счетов.</li><li>Вы не застрахованы от сбоев в системе и никак не можете их предотвратить. А сбои хоть и не часто, но бывают. Так как сервисы бесплатные,&nbsp;<strong>никто ничего вам гарантировать не будет</strong>. И если случится какой-то форс мажор и данные пропадут, вам просто скажут извините. Если у вас самих не очень надежная ИТ структура, вероятность технических проблем на вашем личном сервере возможно будет выше. Но вы этим можете управлять и теоретически сможете построить систему с удовлетворяющим вас уровнем надежности.</li><li><strong>Неочевидны способы бэкапа</strong>&nbsp;и восстановления почтовых ящиков в таких сервисах. Бывают ситуации, когда из почтового ящика удаляют все письма. Допустим, сохранить их можно различными способами, просто скачав, а как потом обратно в ящик вернуть, сохранив все даты оригинальными?</li><li>Нет возможности анализировать непонятные ситуации. Например, вы отправляете письмо, а оно не приходит к адресату. Что делать? В случае с облачной почтой вы ничего не сделаете, так как у вас нет никаких инструментов для разбора ситуации. Попробуете просто отправить письмо из другого ящика. Бывает&nbsp;к вам не приходит письмо, и вы никак не можете понять, почему его нет. А дело может быть банально в неправильно настроенном фильтре. Это обычная ситуация, когда фильтров много, плюс если еще какие-то пересылки настроены.&nbsp;<strong>Без доступа к логам сервера бывает трудно разобраться в ситуации</strong>. А если есть лог почтового сервера, то сразу становится понятно, почему письмо не отправляется, или что с ним стало после получения. Можно наверняка узнать, получил ли удаленный сервер ваше письмо или нет.</li><li>Нет простых способов&nbsp;<strong>ограничить доступ к почтовым ящикам</strong>, например, только из локальной сети офиса. Почтовые ящики публичных сервисов доступны всегда через интернет. Есть возможность решить эту проблему в google apps через авторизацию в сторонних сервисах. В яндексе и мейле я не встречал возможности реализовать такой функционал.</li><li>Нужно еще понимать, что&nbsp;<strong>бесплатный сыр известно где бывает</strong>. До конца не ясно, как почтовые сервисы используют полученную от пользователей информацию. Хорошо, если только для показа им релевантной рекламы. Думаю, что не только для этого.</li></ol>



<p>Когда я только начинал работать примерно 10 лет назад, вопроса какую почту использовать в организации, не стояло. Все ставили свои почтовые серверы и админили их. Бесплатные почтовые сервисы не предоставляли на тот момент для бизнеса никаких инструментов для управления почтой. Когда такие инструменты стали появляться, я думал, что скоро свои почтовые серверы никому не будут нужны, так как в них отпадет смысл. А все мои мучения (не люблю с ними работать) с почтовыми серверами станут бессмысленными.</p>



<p>Мне предоставилась возможность администрировать домены на базе публичных почтовых сервисов. После этого появился написанный выше список минусов. И лично для меня эти минусы перевесили плюсы, и теперь я по-прежнему настраиваю почтовые сервера сам. В конечном итоге это более удобно и надежно, если рассматривать в совокупности плюсы и минусы использования и администрирования.</p>



<p>Самым большим минусом мне видится отсутствие полноценных почтовых логов и хорошей схемы бэкапа. Разбирать проблемы неудобно без логов. Быстро и просто восстановить удаленное письмо в прежнее место не получится, хотя для опенсорсных почтовых серверов это простое дело.</p>


</br>



<h2 class="wp-block-heading">Почтовый сервер на базе бесплатного ПО</h2>



<p>Рассмотрим преимущества и недостатки собственного почтового сервера на базе бесплатного программного обеспечения. В принципе, сюда можно отнести и некоторые платные, например Kerio Mail Server, который тоже частенько используют. Думаю, его можно сюда же отнести, так как функционал он обеспечивает схожий. Я рассматриваю все почтовые сервера в совокупности, не выделяя отдельных представителей. Хотя в линуксе, кроме postfix и exim, лично я не встречал ничего в продакшене. Сам всегда использую postfix, так как привык к нему и знаю его неплохо. Рассмотрим внимательно плюсы таких серверов.</p>



<ol><li><strong>Вы полностью контролируете всю информацию</strong>, которая приходит по почте и хранится на вашем сервере. Вы можете ограничивать по своему усмотрению доступ к почте различными техническими средствами. Можете централизованно настраивать правила удаления, к примеру, приватной информации в письмах, по различным признакам, которые сами можете установить.</li><li>Уровень доступности почтового сервиса зависит только от вас. При должном подходе,&nbsp;<strong>вы можете обеспечить устраивающую вас надежность</strong>&nbsp;работы системы.</li><li>Гибкая система бэкапа. Средств для ее организации масса, в том числе бесплатных. Все зависит только от ваших потребностей, навыка и возможностей. Вы можете хранить различные срезы по датам, по ящикам, доменам, организовать любую подходящую схему.</li><li><strong>Практически ничем не ограниченный функционал</strong>. В разумных пределах, конечно <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Вы можете создавать почтовые ящики с возможностью только локальной переписки, можете централизованно управлять приемом и отправкой почты, вести свои белые и черные списки. Можете настраивать различные ограничения по ящикам и доменам. Можете без проблем централизованно управлять дублированием почты нужных ящиков, делать всевозможные пересылки и много другое.</li><li>Все средства мониторинга работы сервера в ваших руках.&nbsp;<strong>Вы сможете разобраться с любой непонятной ситуацией</strong>, имея на руках логи почтового сервера. Эта служба хорошо логируется. У меня практически никогда не возникало проблем, когда не было понятно, куда пропало письмо. Чаще всего находятся следы и можно однозначно сказать, что стало с письмом.</li></ol>



<p>Дальше пройдемся по минусам, которых не очень много, но они существенны.</p>



<ol><li>Необходимо&nbsp;<strong>покупать или арендовать оборудование</strong>&nbsp;для организации своего почтового сервера. В случае с сервером на линукс, требования к производительности будут не большие. Мне обычно хватает виртуалки на 4 ядра и 4 гб оперативной памяти. Гораздо важнее дисковая подсистема. Тут чем быстрее диски, тем лучше. Не стоит забывать про бэкап. Для него тоже нужны ресурсы железа.</li><li>Настройка полноценного, многофункционального почтового сервера требует как минимум средних знаний в системном администрировании linux. То есть просто админ-эникей тут не подойдет.&nbsp;<strong>Нужен специалист с опытом</strong>. У него должна быть приличная зарплата. Если такого админа нет в штате, я рекомендую нанять кого-нибудь на разовую работу по настройке. Чаще всего после настройки, особой работы по поддержке сервера не требуется, если не будете менять функционал. Достаточно просто следить за свободным местом на дисках и управлять ящиками через web панель.</li><li><strong>Удобство работы через web интерфейс</strong>&nbsp;будет ниже, чем в бесплатных почтовых службах. Как ни крути, но тот же gmail реализован очень удобно. Быстрый поиск, фильтры, сортировки, метки и т.д. Это реально удобно. Я очень привык и не могу пользоваться чем-то другим.</li></ol>



<p>Такие минусы своего почтового сервиса видятся мне. Самый существенный для меня это последний. Сам привык работать с почтой через web. Почтовыми клиентами не люблю пользоваться, хотя приходится. Web интерфейсы к бесплатным почтовым серверам по удобству и быстродействию сильно не дотягивают до gmail или яндекс, сравнивать бессмысленно. И тем не менее, считаю, что для среднестатистической организации это наиболее оптимальный вариант. Пример настройки такого бесплатного почтового сервера —&nbsp;postfix + dovecot + postfixadmin + roundcube.</p>


</br>



<h2 class="wp-block-heading">Плюсы и минусы&nbsp;Microsoft Exchange Server</h2>



<p>У меня нет большого опыта администрирования exchange. Я его когда-то давно тестировал, когда решал, с какими почтовыми серверами буду работать. Устанавливал, изучал функционал. Потом один раз настроил почтовый сервер для организации. Они хотели именно exchange. Проблем не возникло, быстро настроил по многочисленным гайдам в интернете. Порог входа в настройщики почтового сервера exchange очень низкий. С базовым функционалом может справиться даже эникей.</p>



<p>Для средних организаций реально полезным и трудно заменимым функционалом считаю общие календари. И конечно же удобство интеграции с AD, если она есть. А чаще всего AD есть, так как я не представляю себе администрирование сети больше чем на 20-30 человек без Active Directory. Считаю, что тут бессмысленно экономить и надо покупать Microsoft Server.</p>



<p>Рассмотрим теперь плюсы и минусы Microsoft Exchange Server. Предупреждаю на всякий случай еще раз. Рассказываю только свое видение, опыта работы с сервером мало, поэтому хотел бы сам в комментариях получить замечания по нему, чтобы иметь более адекватную оценку этой системы. Плюсы&nbsp;Exchange:</p>



<ol><li><strong>Большой функционал</strong>&nbsp;при относительной простоте настройки. Развернуть сервер с базовым функционалом по силе любому админу. Причем этот базовый функционал может быть больше, чем у какой-нибудь сборке под линуксом.</li><li><strong>Интеграция с Active Directory</strong>. Вы создаете новую учетную запись пользователя и почтовый ящик ему сразу же готов. Не нужно никаких специальных настроек, если у пользователя Microsoft Outlook. Подключение к серверу настраивается в несколько кликов мышкой.</li><li>Удобные&nbsp;<strong>средства администрирования</strong>&nbsp;в виде готовых оснасток Windows Server. Тут все традиционно для решений от Microsoft.</li></ol>



<p>Минусы&nbsp;Exchange Server такие же характерные, как и плюсы, для большинства продуктов от Microsoft:</p>



<ol><li><strong>Цена, цена и еще раз цена</strong>.&nbsp;Microsoft Exchange Server стоит дорого. Нужно считать и прикидывать, будет ли оправдано его приобретать. Для использования всего заложенного функционала, необходимо будет на каждое рабочее место купить редакцию Microsoft Office c аутлуком в комплекте. Это еще дополнительные расходы.</li><li>Для хорошей производительности требуется&nbsp;<strong>значительно более мощное железо</strong>, по сравнению с серверами на линуксе. А для поддержки больших почтовых ящиков, например на 50 гигабайт, понадобится очень мощное железо. Хотя такие ящики для того же dovecot не представляют особых проблем. В exchange вы скорее всего будете использовать квоты для ограничения максимального размера почтового ящика.</li><li>Для бэкапа скорее всего придется так же приобретать приличной мощности железо и&nbsp;<strong>платный софт</strong>. Тут я только предполагаю, реально я не знаю, что нужно для удобного бэкапа exchange. Знаю платный софт от популярных вендоров. Возможно есть что-то бесплатное.</li></ol>



<p>Вывод по&nbsp;Exchange Server у меня таков — он почти во всем хорошо, кроме цены. Если бы он был бесплатен, я скорее всего пользовался бы именно им. По вполне объективным причинам, это невозможно. Хороший и удобный софт сам по себе не появляется. Его нужно создать, а на это потратить средства, которые захочется вернуть с прибылью.</p>



<p>На сегодняшний день, с учетом стоимости&nbsp;Microsoft Exchange Server и&nbsp;Microsoft Office, я не использую эти продукты Microsoft. Мало кто согласен выложить необходимую сумму для почтового сервера. Мне бы хотелось посмотреть на&nbsp;Exchange поближе в реальных условиях хотя бы человек на 60-80, чтобы оценить более объективно этот сервер. Но пока такой возможности не представилось.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Подведу итог своим рассуждениям о почтовом сервере для небольшой среднестатистической организации. Хотя вывод, думаю, уже и так понятен. Сам я предпочитаю второй описанный мной вариант — почтовый сервер на базе бесплатного ПО на linux. Но другие два варианта я бы не стал сбрасывать со счетов. Бесплатная почта от публичных сервисов будет однозначна удобна для совсем небольшого коллектива — на 10-15 человек. Городить свой сервер для такой численности нет никакого смысла.</p>



<p>Exchange Server я бы порекомендовал использовать, если есть и не жалко потратить средства на его приобретение. Продукт однозначно удобный, функциональный и простой в настройке и администрировании. Говоря простой, нужно понимать, что это условно. Конфигурации могут быть и очень сложными, но в данном случае я рассматриваю начальный уровень.</p>


</br>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b2%d1%8b%d0%b1%d0%be%d1%80-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%81%d1%80%d0%b5%d0%b4%d0%bd%d0%b5%d0%b3%d0%be/">Выбор почтового сервера для среднего бизнеса — свой или облачный</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b2%d1%8b%d0%b1%d0%be%d1%80-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%81%d1%80%d0%b5%d0%b4%d0%bd%d0%b5%d0%b3%d0%be/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Настройка почтового сервера iRedMail на CentOS 7</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-iredmail-%d0%bd%d0%b0-centos-7/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-iredmail-%d0%bd%d0%b0-centos-7/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 18 Jul 2020 21:45:30 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Сервер]]></category>
		<category><![CDATA[iRedMail]]></category>
		<category><![CDATA[Почтовый сервер]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1193</guid>

					<description><![CDATA[<p>Я давно собирался раскрыть тему настройки почтового сервера на linux, но никак не доходили руки. Начну с установки и настройки</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-iredmail-%d0%bd%d0%b0-centos-7/">Настройка почтового сервера iRedMail на CentOS 7</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Я давно собирался раскрыть тему настройки почтового сервера на linux, но никак не доходили руки. Начну с установки и настройки iRedMail – готовой сборки на основе postfix для создания почтового сервера с web интерфейсом. Изначально я хотел все установить и настроить сам, связав все необходимые элементы, но данная cборка упростила мне задачу.</p>



<p>С почтовыми серверами я знаком достаточно хорошо, лично настраивал их с нуля много раз, постоянно администрирую. При этом всегда использовал&nbsp;<strong>postfix</strong>&nbsp;на различных операционных системах. Это самый популярный бесплатный почтовый сервер, с которым легко работать из-за большого количества документации и руководств. Функционал у него тоже великолепный. Мне еще ни разу не встречалась задача, которую нельзя бы было реализовать на этом сервере. Хотя с какими-то экзотичными требованиями я не работал, чаще всего это обычные среднестатистические офисные почтовые серверы.</p>


</br>



<p>Настроить почтовый сервер не самая простая задача. Лично мне не нравится с ними возиться из-за большого количества всевозможных настроек и элементов, которые нужно между собой связать. Чуть позже я детально разберу все самое основное, что требуется для полноценного почтового сервера. Недавно мне на глаза попалась готовая сборка для почтового сервера под названием&nbsp;<strong>iRedMail</strong>. Я решил на нее внимательно посмотреть, потестировать. В ее основе традиционный smtp сервер — postfix. Она мне понравилась, я решил, что ей вполне можно пользоваться. Дальше расскажу о ней поподробнее.Если вы хотите полностью самостоятельно настроить свой почтовый сервер, то воспользуйтесь моей отдельной статьей на эту тему —&nbsp;настройка почтового сервера postfix + dovecot. В ней реализован примерно такой же функционал, что и в данной статье, но без iredmail. Все установлено и настроено руками самостоятельно.</p>



<h2 class="wp-block-heading">Что такое iRedMail</h2>



<p>Расскажу своими словами что такое iRedMail и как ей пользоваться. Это набор скриптов для автоматической установки и базовой настройки всех компонентов, необходимых для полноценной работы почтового сервера. Вот список основных программ, которые будут установлены вместе с iRedMail:</p>



<ol><li><strong>Postfix</strong>&nbsp;— сердце почтовой системы, вокруг которого настраивается все остальное.</li><li><strong>Dovecot</strong>&nbsp;— imap сервер для доступа к почтовым ящикам пользователей.</li><li><strong>Web сервер</strong>&nbsp;— apache+ php + mysql для вспомогательных функций.</li><li><strong>Roundcube</strong>&nbsp;и&nbsp;<strong>SOGo</strong>&nbsp;— веб интерфейсы для доступа к почте. Пользоваться можно любым, что больше понравится.</li><li><strong>Awstats</strong>&nbsp;— статистика работы почтового сервера.</li><li><strong>Amavisd</strong>&nbsp;— модуль связи почтовой системы и дополнительных обработчиков почты (антиспам, антивирус и т.д.)</li><li><strong>SpamAssassin</strong>&nbsp;— бесплатный антиспам для почты.</li><li><strong>ClamAV</strong>&nbsp;— бесплатный антивирус.</li><li><strong>Greylist</strong>&nbsp;— эффективная система борьбы со спамом.</li></ol>



<p>Это основные элементы. В сборке еще много вспомогательных системных настроек и утилит, которые упрощают настройку сервера. Например, в iRedMail включены:</p>



<ul><li>готовые правила для&nbsp;<strong>iptables</strong></li><li><strong>fail2ban</strong>&nbsp;для защиты сервера от брутфорса</li><li><strong>logwatch</strong>&nbsp;для наблюдения за логами сервера</li><li>наборы cron скриптов для обслуживания и бэкапа сервера</li><li>модуль&nbsp;<strong>iRedAPD&nbsp;</strong>для удобного управления функционалом почтового сервера</li><li>готовые&nbsp;<strong>ssl</strong>&nbsp;сертификаты и&nbsp;<strong>dkim</strong>&nbsp;ключ.</li></ul>



<p>Чем же мне понравился iRedMail?</p>



<ol><li>Во-первых, в нем есть все, что нужно для почтового сервера. Очень грамотно и четко подобраны все элементы.</li><li>Во-вторых, в нем нет никаких импровизаций и свистелок. Весь софт стандартный, все конфиги стандартные. Их легко читать и править. По сути, iRedMail это скрипт по автоматической установке и настройке стандартного софта. После установки вы можете по своему усмотрению донастроить или изменить все, что вам покажется необходимым. Именно этим я и займусь в своей статье.</li><li>В-третьих, выполняются полезные системные настройки сервера, избавляющие&nbsp;вас от рутинных операций, которые пришлось бы делать вручную.</li><li>В-четвертых, в комплекте идет написанный на питоне модуль&nbsp;<strong>iRedAPD&nbsp;</strong>для управления всем установленным хозяйством. Это полезно тем, кто не очень понимает, как работает весь тот комплекс, который будет установлен. С помощью этого модуля можно очень быстро и просто, к примеру, отключить антивирус или антиспам, если он вам не нужен. При этом вам не надо будет разбираться во внутренней работе этих модулей.</li></ol>



<p>Теперь ложка дегтя. В бесплатной версии iRedMail нет почти никаких настроек. Через веб интерфейс вы сможете только добавить нового пользователя почты и все. Если нужно что-то большее, то выкручивайтесь как умеете. В данной конфигурации почтового сервера все управление происходит через базу данных mysql. Вы можете вручную через phpmyadmin сделать все, что угодно. Платная версия&nbsp;iRedMail предлагает всего лишь навсего удобную панель управления всеми настройками, которая избавит вас от необходимости лазить в базу напрямую.</p>



<p>Сначала я решил, что меня устроит вариант правки базы данных через phpmyadmin. Но когда я попробовал, я понял, что это неудобно. Такой сервер после меня не сможет никто обслуживать. Да и самому руками забивать поля в базе данных было неудобно. Выход из сложившейся ситуации есть. Я расскажу, как получить бесплатно часть возможностей платной версии, не покупая ее. Да, придется немного потрудиться, но это не сложно, я все расскажу.</p>



<p>Как я уже сказал, бесплатная версия веб панели позволяет только создать пользователя. Для нормальной работы с пользователями не хватает создания алиасов и перенаправления почты из одного ящика в другой. Данный функционал реализован в бесплатной панели управления postfix —&nbsp;<strong>postfixadmin</strong>. Ее мы и прикрутим к iRedMail. Она не без проблем, но все же устанавливается и нормально работает вместе с веб панелью&nbsp;iRedMail, используя одну базу данных mysql, не мешая друг другу.</p>



<p>Управлять модулями сборки мы будем в iRedAPD в консоли сервера с помощью его конфигурационных файлов. Разработчики любезно оставили весь рабочий функционал, никак его не ограничив. Платная версия представляет только удобное управление. Это позволит нам получить весь имеющийся функционал бесплатно.</p>



<p>Вкратце описал что такое iRedMail. Подозреваю, что тем, кто никогда не настраивал почтовые сервера многое не понятно. Но ничего не поделать. Простых путей в освоении работы почты нет, придется разбираться. А для тех, кто понимает о чем идет речь, стало понятно, что такое iRedMail и как его можно использовать. Мне было полезно просто заглянуть в некоторые конфиги, чтобы посмотреть, как реализуется та или иная возможность.</p>



<h2 class="wp-block-heading">Требования для почтового сервера</h2>



<p>Начнем потихоньку подготовку к настройке нашего почтового сервера. Первым делом нужно подготовить DNS записи. Это очень важно. Без правильной наcтройки dns записей нормально работать сервер не будет. Вернее, работать то он будет, но ваша почта может улетать в спам у принимающей стороны. Я буду рассказывать все на конкретном примере. У меня есть домен zeroxzed.ru. Его почта уже привязана к другому почтовому серверу, я не хочу его менять. Для написания этой статьи, я сделал поддомен&nbsp;<strong>m.zeroxzed.ru</strong>. Для демонстрации работы нет никакой разницы, используется домен второго уровня или третьего, как в моем случае. В этом поддомене будет находиться мой почтовый сервер srv.m.zeroxzed.ru. Это имя физического сервера, на котором будет работать почта. Почтовые ящики у меня будут вида user1@m.zeroxzed.ru. Внешний ip адрес на котором будет работать сервер —&nbsp;188.45.19.125.</p>



<p>Для подготовки к настройке почтового сервера вам нужно добавить следующие DNS записи в панели управления DNS вашего домена.</p>



<figure class="wp-block-table"><table><tbody><tr><th>Имя</th><th>Тип</th><th>Значение</th></tr><tr><td>m</td><td>A</td><td>188.45.19.125</td></tr><tr><td>srv.m</td><td>A</td><td>188.45.19.125</td></tr><tr><td>m</td><td>MX</td><td>srv.m.zeroxzed.ru</td></tr></tbody></table></figure>



<p>Подробнее о типах DNS записей читайте на&nbsp;<a href="https://ru.wikipedia.org/wiki/%D0%A2%D0%B8%D0%BF%D1%8B_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%BD%D1%8B%D1%85_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B5%D0%B9_DNS" target="_blank" rel="noreferrer noopener">википедии</a>. В случае с доменом первого уровня, например site.ru и именем почтового сервера srv.site.ru, вам нужны будут только 2 записи:</p>



<figure class="wp-block-table"><table><tbody><tr><td>srv</td><td>A</td><td>внешний IP</td></tr><tr><td>@</td><td>MX</td><td>srv.site.ru</td></tr></tbody></table></figure>



<p>Но это не все. К сожалению, одних DNS записей не достаточно. Для вашего внешнего IP адреса должна быть прописана обратная зона — PTR.&nbsp;В обратной зоне ip-адресу ставится в соответствие доменное имя. То есть вашему IP адресу должно соответствовать доменное имя&nbsp;srv.site.ru. Настройками обратной зоны в подавляющем большинстве случаев вы не можете управлять. Для ее изменения нужно обратиться к вашему провайдеру, который выделил вам внешний IP и сказать ему, что вы хотите настроить почтовый сервер и вам необходимо прописать обратную зону с именем&nbsp;srv.site.ru на внешний IP адрес. Это обычная просьба, и тех поддержка без проблем сделает то, что вы просите, если они предоставляют такую услугу. Чаще всего провайдеры, работающие с юридическими лицами, такую услугу предоставляют. Домовые провайдеры для физиков нет.</p>


</br>



<p>Проверить обратную зону для домена можно в консоли сервера с помощью команды&nbsp;<strong>host</strong>. Вот пример для моего внешнего IP. Я не стал просить провайдера прописывать обратную зону для тестового сервера, она не правильная. Привожу просто для примера:</p>



<pre class="wp-block-preformatted"># host 188.45.19.125
125.19.45.188.in-addr.arpa domain name pointer <strong>host-188-45-19-125.beirel.ru</strong>.</pre>



<p>Это пример не настроенной обратной зоны. Возьмем для примера какой-нибудь сайт, у которого правильно настроены все DNS записи и обратная зона. Например это будет raiffeisen.ru. Смотрим его записи.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-01.png" alt="Проверка dns записей" class="wp-image-4185"/></figure></div>



<p>Здесь все четко — есть MX запись с именем почтового сервера, есть IP адрес этого сервера и обратная зона. Все это однозначно соответствует друг другу. Иногда люди путают, называют, к примеру, сервер mail.site.ru, а обратную зону делают просто site.ru или srv.site.ru. Вроде все правильно, домен один и тот же, но соответствие не полное. Чтобы все было правильно, должно быть полное соответствие всех записей — A, MX, PTR. Очень много спам фильтров используют эти записи для проверки домена отправителя на полное соответствие всех записей.</p>



<p>Для непосредственно работы почтового сервера обратная зона не нужна. Если у вас тестовый сервер и вы просто тренируетесь в настройках, можно обойтись без обратной зоны. Почта будет ходить. Но если вы готовите рабочий сервер, то обратную зону сделайте обязательно. Без нее некоторые серверы вообще не будут принимать вашу почту, а большинство будут либо считать спамом, либо накидывать очень много балов в своих спам фильтрах. Это важный элемент в борьбе со спамом, поэтому без обратной записи для принимающей стороны вы по-умолчанию становитесь спамером и вам придется доказывать, что вы на самом деле не он.</p>



<p>После того, как закончите с DNS и PTR можно приступать к настройке самого сервера.</p>



<h2 class="wp-block-heading">Установка iRedMail</h2>



<p>Я буду настраивать почтовый сервер на CentOS 7. Если у вас еще не готов сервер, то рекомендую мои материалы —&nbsp;установка&nbsp;и&nbsp;<a href="https://clip-clap.ru/it/софт-и-ос/linux/centos/centos-7-и-8-настройка-сервера-после-установк/" target="_blank" aria-label="undefined (откроется в новой вкладке)" rel="noreferrer noopener">базовая настройка CentOS</a>.&nbsp;Каких-то особых требований к установке нет. Для системы достаточно раздела 20-30 гигабайт. Для почтовой базы рекомендую отдельный раздел с достаточным свободным местом. Начать можно хотя бы с 200 гигабайт. Но это не обязательно, для теста можете все сделать на одном разделе. Потом, если появится необходимость, просто перенесете всю базу в другое место с помощью символьной ссылки. Когда все будет готово, приступайте к установке iRedMail.Если не будете смотреть мою статью по базовой настройке, то не забудьте отключить SELinux, без этого iRedMail нормально работать не будет. Это обязательное требование, указанное на сайте разработчика. Так же не рекомендую отключать firewalld, если не хотите настраивать iptables вручную, iredmail автоматически настраивает iptables<em>.</em>Второй важный момент. Перед началом установки почтового сервера, убедитесь, что указали корректный&nbsp;<strong>hostname</strong>&nbsp;для своего сервера, равный DNS записи, которую сделали ранее. Если забыли это сделать во время установки, то смотрите в моей статье про&nbsp;<a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/centos/%d1%81%d0%b5%d1%82%d0%b5%d0%b2%d1%8b%d0%b5-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b8-%d0%b2-centos/" target="_blank" aria-label="undefined (откроется в новой вкладке)" rel="noreferrer noopener">сетевые настройки centos</a>&nbsp;как изменить hostname.</p>



<p>Установка неплохо описана на самом&nbsp;<a href="http://www.iredmail.org/docs/install.iredmail.on.rhel.html" target="_blank" rel="noreferrer noopener">сайте</a>&nbsp;продукта. Можете подсматривать туда, если что-то будет непонятно. Идем на страницу загрузки и копируем ссылку для загрузки.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-02-1024x304.png" alt="Скачать iredmail" class="wp-image-4186"/></figure></div>



<p>Скачиваем скрипт установки iRedMail и распаковывем.</p>



<pre class="wp-block-preformatted"># cd /root &amp;&amp; wget&nbsp;https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.5-1.tar.bz2
#&nbsp;tar xjf iRedMail-*</pre>



<p>Переходим в каталог и запускаем установку:</p>



<pre class="wp-block-preformatted"># cd&nbsp;iRedMail-* &amp;&amp;&nbsp;bash iRedMail.sh</pre>



<p>Первым вопросом будет каталог для хранения почтовой базы. Можете оставить по-умолчанию&nbsp;<strong>/var/vmail</strong>, либо выбрать свой. Потом нужно выбрать веб сервер — nginx или apache. Я рекомендую выбрать&nbsp;<strong>apache</strong>, так проще будет установить и настроить phpmyadmin и postfixadmin. Но если вам непременно нужен nginx, то можно выбрать и его, никаких проблем с ним не будет, если умеете настраивать. В качестве базы данных я выбираю&nbsp;<strong>mariadb</strong>.</p>



<p>Затем нужно будет указать имя почтового домена. Обращаю внимание, что это не имя сервера, а именно домена для почты. В моем случае это&nbsp;<strong>m.zeroxzed.ru</strong>. Если у вас домен второго уровня, то это будет site.ru. Дальше&nbsp;нужно указать пароль от административной учетной записи — postmaster@m.zeroxzed.ru. На последнем этапе выбираем необходимые компоненты. Я рекомендую выбрать все, потом ненужное можно отключить.</p>



<p>Еще раз проверяете настройки и если все в порядке, то начинается установка.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-03.png" alt="Установка iRedmail" class="wp-image-4187"/></figure></div>



<p>В конце установки будет задан вопрос, хотим ли мы применить предлагаемые правила Firewalld. Соглашаемся.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-04.png" alt="Применение правил firewalld" class="wp-image-4188"/></figure></div>



<p>Дальше тоже соглашаемся с настройками MySQL. Ну и все, на этом установка iRedMail закончена. На всякий случай сохраните последнее информационное сообщение, чтобы потом не забыть и не набирать вручную необходимые адреса.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-05.png" alt="Информация об установке" class="wp-image-4189"/></figure></div>



<p>Перезагружаем сервер, чтобы все службы корректно запустились. Идем в свой почтовый ящик пользователя&nbsp;postmaster в roundcube webmail или SOGo groupware&nbsp;и читаем созданные автоматически письма. Заодно посмотрите, какой вам интерфейс больше нравится и чем будете пользоваться. Мне лично&nbsp;roundcube нравится больше.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-06.png" alt="web интерфейс почтового сервера" class="wp-image-4190"/></figure></div>



<p>В первом письме вся техническая информация по установленным компонентам, в том числе необходимые пароли. Это письмо обязательно сохраните и никому не показывайте. Копия этой информации есть в файле&nbsp;<em>/root/iRedMail-0.9.5-1/iRedMail.tips</em>. Эта информация нам понадобится в дальнейшем.</p>



<p>На текущий момент почтовый сервер полностью готов и работоспособен. Вы можете зайти в панель администрирования по адресу&nbsp;<em>https://имя_сервера/iredadmin/</em>&nbsp;и создать нового пользователя. Добавим пользователя user1.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-07.png" alt="Создание пользователя postfix" class="wp-image-4191"/></figure></div>


</br>



<p>Если поле&nbsp;<strong>Mailbox Quota</strong>&nbsp;оставить пустым, то размер ящика будет неограниченным. Теперь можно зайти этим пользователем в webmail и отправить кому-нибудь письмо. Я для примера отправлю письмо на ящик zeroxzed@gmail.com. Вот как будет выглядеть лог /var/log/maillog во время корректной доставки письма.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-08.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-08.png" alt="postfix лог отправки" class="wp-image-4192"/></a></figure></div>



<p>Я сразу ввожу вас в курс дела, чтобы вы понимали, как работает почта, куда смотреть если что-то не так. Во время администрирования почтового сервера частенько придется заглядывать в логи для разбора различных ситуаций. По логу postfix видно, что сервер gmail корректно принял сообщение без каких-либо предупреждений. Письмо дошло до адресата. Теперь ответим с ящика zeroxzed@gmail.com и посмотрим на лог.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-09.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-09.png" alt="postfix лог получения" class="wp-image-4193"/></a></figure></div>



<p>Все в порядке, письмо доставлено пользователю user1. На текущий момент почтовый сервер postfix на CentOS полностью работоспособен и готов обслуживать пользователей. Если вам достаточно текущего функционала, то можно дальше не читать и пользоваться тем, что есть. Но я советую все же почитать. Сейчас не хватает нескольких очень популярных настроек.</p>



<h2 class="wp-block-heading">Обзор возможностей почтового сервера</h2>



<p>Посмотрим, что в данный момент умеет наш почтовый сервер на centos со сборкой iredmail, чтобы мы понимали, на что можно рассчитывать и чего ждать от сервера.</p>



<h3 class="wp-block-heading">Graylist</h3>



<p>Сразу расскажу о настроенной и активированной функции&nbsp;<strong>Greylist</strong>, которая вызовет у неподготовленного администратора массу вопросов. Технология называется серый список, подробно о ней можно почитать на&nbsp;<a href="https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA" target="_blank" rel="noreferrer noopener">википедии</a>. Расскажу своими словами без технической информации как это работает и в чем могут быть проблемы. Когда вам кто-то первый раз отправляет письмо, почтовый сервер его сразу не принимает, а говорит удаленному серверу, подожди, попробуй еще раз через несколько минут. Удаленный сервер понимает эту просьбу и через несколько минут отправляет письмо еще раз. И только после этого наш сервер принимает письмо и добавляет адрес сервера отправителя в белый список на 30 дней, чтобы больше не делать такую проверку и принимать письма сразу.</p>



<p>Этот механизм очень хорошо отсеивает спам, так как спамеры чаще всего не делают повторных попыток отправить письмо. Не все, конечно, но некоторая часть точно. По моему опыту могу сказать, что большая часть спама отсеивается технологией graylist. Но есть несколько серьезных минусов, из-за которых лично я предпочитаю серые списки не использовать.</p>



<ol><li>Не все серверы корректно отрабатывают просьбу на повторную доставку письма. Кто-то может через 5 минут повторно отправить письмо, а кто-то через час. При этом пользователь сидит и ждет свое письмо. Это очень неудобно, особенно если менеджер разговаривает по телефону и пытается обменяться тестовыми письмами с новым клиентом. Да, задержка будет только в первый раз, но все равно это неудобно. Даже 5 минут иногда раздражает ждать.</li><li>Сейчас распространены облачные технологии и многие пользователи используют облачные почтовые системы. У таких систем много почтовых серверов, и отправка производится каждый раз с разного. Домен может быть один и тот же, но полное имя сервера будет другое. Технология graylist запоминает точное имя сервера и ждет, что повторное письмо придет с этого же сервера. Но может получиться так, что первое письмо придет с сервера srv1.pochtamail.ru, а повторное с srv2.pochtamail.ru. В итоге повторное письмо тоже попадет в серый список и наш сервер будет ждать повторное письмо уже от второго сервера. А следующее письмо может прийти с третьего сервера и так далее. В общем, письмо можно ждать сутки и более, пока не придет пара писем с одного и того же сервера. Всех таких клиентов можно добавлять в белый список по имени домена и для них серый список вообще не будет работать, но это ручной труд и заранее не узнаешь с кем будут проблемы. Добавлять начинаешь уже тогда, когда пользователи жалуются на то, что письмо не доходит.</li></ol>



<p>Возможно вторую проблему как-то можно решить, изменив механизм работы graylist, но по умолчанию он работает именно так, как я описал. Дальше я расскажу, как включать и отключать серые списки.</p>



<h3 class="wp-block-heading">Переадресация почты</h3>



<p>Наш почтовый сервер способен переадресовывать почтовые сообщения. Например, у вас есть пользователи user1 и user2. Можно сделать так, что при отправке письма пользователю user1, копия этого письма будет отправлена user2. То есть письмо получат оба пользователя. Пользователь user1 может не знать, что его почта копируется куда-то еще.</p>



<p>Мы можем создать алиасы и направлять с них почту в несколько почтовых ящиков. Например, можно сделать алиас sale@site.ru. При отправке письма на этот адрес, письмо отправляется пользователям user1 и user2.</p>



<p>Мы можем настроить почтовые ящики, в которые будет копироваться вообще вся входящая или исходящая переписка. Это самый простой способ организации бэкапа писем пользователей. Если кто-то удалит из своего ящика письмо, то оно сохранится в общем почтовом ящике, где лежат все письма.</p>



<p>Весь этот функционал невозможно включить через бесплатную панель администрирования. Нужно либо покупать платную, либо руками делать настройки в mysql базе. Ниже я расскажу, как это делать удобно.</p>



<h3 class="wp-block-heading">Антивирус clamav</h3>



<p>В сборку iredmail включен бесплатный антивирус&nbsp;<strong>clamav</strong>. Лично я не вижу в нем никакого смысла. По почте вирусы давно уже не рассылают, а если рассылают, то ссылки на них. Лишнюю нагрузку на систему в виде антивируса считаю ненужной. Если у вас другое мнение, поделитесь и аргументируйте. Расскажу позже, как отключить антивирус.</p>



<h3 class="wp-block-heading">Антиспам&nbsp;SpamAssassin</h3>



<p>Модуль&nbsp;<a href="https://ru.wikipedia.org/wiki/SpamAssassin" target="_blank" rel="noreferrer noopener">SpamAssassin</a>&nbsp;— самое популярное бесплатное средство для борьбы со спамом. По идее, он не плохо работает, но требует некоторого внимания к себе, так как работает по оценочному признаку и иногда может делать ложные срабатывания. Нужна некоторая калибровка на месте для эффективной работы. Мне всегда было лень этим заниматься. Не рекламы ради, а для информации скажу, что самым эффективными и недорогим средством для борьбы со спамом я считаю Касперский антиспам. Чаще всего я использую его. Он реально хорошо режет спам и не дает ложных срабатываний. Удобное решение из серии поставил и забыл, только раз в год ключи продлевай. Предлагаю на местах посмотреть на SpamAssasin и решить, нужен он вам или нет. Отключить при случае не проблема.</p>


</br>



<h3 class="wp-block-heading">Общая адресная книга</h3>



<p>Удобный функционал, но я пока не разбирался подробно как это работает. Подозреваю, что если использовать в качестве базы данных не mysql, а ldap, то можно без проблем подключить глобальную адресную книгу через ldap в любом почтовом клиенте, где это реализовано. В случае mysql работает по-умолчанию адресная книга по всем пользователям домена в веб интерфейсе SOGo. Там можно искать пользователей по домену в соответствующем разделе.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-10.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-10-1024x438.png" alt="Общая адресная книга" class="wp-image-4194"/></a></figure></div>



<p>В roundcube такого функционала я не нашел. Так что этот вопрос открытый. Функция удобная и нужная, возможно позже я отдельно рассмотрю этот момент. Я всегда использую в качестве адресной книги ldap каталог Active Directory, если в организации настроен домен. Это удобно. Все пользователи там заведены, достаточно просто указать им email и подключать адресную книгу в почтовых клиентах.</p>



<h3 class="wp-block-heading">Whitelist и Blacklist</h3>



<p>В iRedMail есть возможность использовать белые и черные списки отправителей и получателей почты. Управлять этими функциями без платной панели управления неудобно. Необходимо все выполнять в консоли сервера. Но по моему опыту такие возможности нужны не очень часто, поэтому можно иногда залезть на сервер и заблокировать кого-нибудь. Я расскажу как это сделать. Например, вы можете какому-то конкретному пользователю запретить отправку писем, не трогая его аккаунт. Иногда это бывает полезно.</p>



<h3 class="wp-block-heading">Throttle — лимиты</h3>



<p>Подробно не разбирался как управлять лимитами без платной панели и зачем они нужны. Чтобы понимать, о чем идет речь, вот скриншот платной панели:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-11.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-11-1024x579.png" alt="Лимиты postfix" class="wp-image-4195"/></a></figure></div>



<p>По настройкам понятно, что можно накладывать ограничения на количество отправленных писем, на их максимальный объем в минуту, час, день. Мне не очень понятно, зачем это может пригодиться. На ум приходит защита от спама, если у кого-то увели пароль от почты и пытаются массово рассылать почту с ящика. Я с этим сталкивался. Тогда ограничение, к примеру, в 30 писем в час, поможет избежать массовой рассылки почты с почтового ящика.</p>



<h2 class="wp-block-heading">Включение и отключение модулей почты</h2>



<p>Разберемся с тем, как нам включать или отключать ненужные модули. В комплекте iRedMail есть написанный на питоне модуль&nbsp;<strong>iRedAPD</strong>. У него есть конфигурационный файл, который управляет основными возможностями почтового сервера. Идем в консоль сервера. В папке&nbsp;<em>/opt/iredapd</em>&nbsp;файл&nbsp;<em>settings.py</em>&nbsp;с основными настройками. Я рекомендую отключить все те модули, которыми вы не будете пользоваться. Это упростит конфигурацию системы, уменьшит нагрузку, сделает проще разбор логов. В конфигурационном файле есть параметр plugins.</p>



<pre class="wp-block-preformatted">plugins = ["reject_null_sender", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]</pre>



<p>Для того, чтобы отключить метод фильтрации почты с помощью серых списков, удалите модуль&nbsp;<strong>greylisting</strong>&nbsp;из указанной строки. После этого перезапустите службу&nbsp;iRedAPD командой.</p>



<pre class="wp-block-preformatted"># service iredapd restart</pre>



<p>Я не разбирался с работой лимитов на отправку и получение почты. Точнее я не смотрел, как ими управлять без платной панели. В связи с этим, данный модуль можно тоже отключить. Он называется&nbsp;<strong>throttle</strong>. Остальное можно оставить.</p>



<p>Теперь разберемся, как отключить&nbsp;SpamAssassin и ClamaV, если вы не будете ими пользоваться. Они оба завязаны на модуль Amavisd, отключаются в его настройках. Открываем его конфиг</p>



<pre class="wp-block-preformatted"># mcedit /etc/amavisd/amavisd.conf</pre>



<p>Находим там строки:</p>



<pre class="wp-block-preformatted"># @bypass_virus_checks_maps = (1); # controls running of anti-virus code
# @bypass_spam_checks_maps = (1); # controls running of anti-spam code</pre>



<p>И убираем комментирование с них (удаляем # в начале строки). После этого перезапускаем amavisd.</p>



<pre class="wp-block-preformatted"># systemctl restart amavisd</pre>



<p>Антиспам и антивирус отключили. Обращаю внимание, что отключать антиспам не обязательно. Он вполне нормально работает, рекомендую его потестировать и посмотреть результат. Я просто показываю возможности системы, но не призываю делать именно так, как я показываю.</p>



<p>Теперь можно поотправлять тестовые письма и убедиться, что отключенные модули не работают. Я не буду приводить логи, чтобы не загромождать статью, она и так очень большая получается. Отмечу только, что после отключения антиспама в логах не будут видны баллы, которые система назначает каждому письму. А после отключения антивируса больше не будет соответствующих служебных заголовков в письмах. После отключения&nbsp;greylist письма от любого сервера будут сразу же доставляться получателям.</p>



<p>Разобрали управление основными функциями нашей почтовой системы. Теперь давайте расширим ее функционал.</p>



<h2 class="wp-block-heading">Установка postfixadmin</h2>



<p>Я предлагаю установить панель управления почтового сервера postfix — postfixadmin. Ее принципиальная особенность от того, что предлагает бесплатная версия iRedMail — возможность создавать алиасы и настраивать переадресацию. У нас уже есть настроенный веб сервер apache с php, но его текущая конфигурация не позволяет нормально использовать postfixadmin, нужно разрешить несколько заблокированных опций. Для этого открываем файл настроек php —&nbsp;<em>/etc/php.ini</em>, находим там&nbsp;параметр&nbsp;<strong>disable_functions&nbsp;</strong>и убираем из него несколько значений:&nbsp;proc_open, proc_close, php_uname, escapeshellarg. Их быть в указанной строке не должно. После этого перезапускаем apache.</p>



<pre class="wp-block-preformatted"># apachectl restart</pre>



<p>Перед тем, как поставить postfixadmin, установим phpmyadmin для работы с базой данных mysql. Нам это пригодится в будущем. Подробно вопрос&nbsp;установки phpmyadmin&nbsp;я рассматривал в отдельной статье, если что-то не получается, посмотрите там. Сейчас просто ставим без пояснений и дополнительных настроек.</p>



<pre class="wp-block-preformatted">#&nbsp;yum install phpmyadmin</pre>



<p>Открываем файл&nbsp;<em>/etc/httpd/conf.d/phpMyAdmin.conf</em>&nbsp;и разрешаем подключаться с вашего&nbsp;ip адреса, редактируя одну строку.</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/httpd/conf.d/phpMyAdmin.conf</pre>



<pre class="wp-block-preformatted">Require ip ваш_ip_адрес</pre>



<p>Перезапускаем apache для применения настроек. Зайти в phpmyadmin можно по адресу&nbsp;<em>http://имя_вашего_сервера/phpmyadmin</em>&nbsp;Пароль пользователя root от mysql есть в первом письме в ящике postmaster.</p>



<p>Теперь у нас все готово для установки postfixadmin.&nbsp;<a href="https://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-3.0/" target="_blank" rel="noreferrer noopener">Скачиваем</a>&nbsp;его и распаковывем.</p>



<pre class="wp-block-preformatted"># cd /root &amp;&amp; wget&nbsp;https://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-3.0/postfixadmin-3.0.tar.gz
# tar -xvzf postfixadmin-*</pre>



<p>Переносим папку postfixadmin в директорию веб сервера и делаем владельцем пользователя apache.</p>



<pre class="wp-block-preformatted"># mv /root/postfixadmin-3.0&nbsp;/var/www/postfixadmin
# chown -R apache.&nbsp;/var/www/postfixadmin</pre>



<p>Создаем конфигурационный файл httpd для postfixadmin.</p>



<pre class="wp-block-preformatted"># mcedit /etc/httpd/conf.d/postfixadmin.conf</pre>



<pre class="wp-block-preformatted">Alias /postfixadmin /var/www/postfixadmin
&lt;Directory /usr/share/phpMyAdmin/&gt;
 AddDefaultCharset UTF-8
  &lt;IfModule mod_authz_core.c&gt;
   &lt;RequireAny&gt;
    Require ip ваш_ip_с_которого_заходите_на_сервер
   &lt;/RequireAny&gt;
  &lt;/IfModule&gt;
&lt;/Directory&gt;
</pre>



<p>Перезапускаем httpd.</p>



<pre class="wp-block-preformatted"># apachectl restart</pre>



<p>Теперь надо отредактировать конфигурационный файл postfixadmin —&nbsp;<em>/var/www/postfixadmin/config.inc.php</em>.</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/var/www/postfixadmin/config.inc.php</pre>



<p>Изменяем значения указанных строк, остальное на свое усмотрение. Там неплохо описаны все параметры.</p>



<pre class="wp-block-preformatted">$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'root';
$CONF['database_password'] = 'hRm3StSuY0WSpk0kkl9OX1Xjv8';
$CONF['database_name'] = 'vmail';
$CONF['encrypt'] = 'dovecot:SSHA';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";</pre>



<p>Пароль пользователя mysql root ищите в первом письме в ящике postmaster. Теперь заходим по адресу&nbsp;<em>http://имя_вашего_сервера/postfixadmin/setup.php</em>&nbsp;и запускаем установку. Если все в порядке, то у вас начнется обновление базы данных, которое завершится ошибкой:</p>



<pre class="wp-block-preformatted">DEBUG INFORMATION:
Invalid query: Duplicate key name 'domain'

Check your error_log for the failed query.</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-12.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-12.png" alt="Ошибка установки postfixadmin" class="wp-image-4196"/></a></figure></div>


</br>



<p>Инсталлятор хочет установить индексы в таблице, но они там уже есть. Нам надо их удалить, чтобы корректно завершить установку. Для этого идем в phpmyadmin, открываем базу vmail и выполняем в ней запрос.</p>



<pre class="wp-block-preformatted">DROP INDEX domain on mailbox;
DROP INDEX domain on alias;</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-13.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-13.png" alt="Исправление ошибки" class="wp-image-4197"/></a></figure></div>



<p>После этого обновляем страницу&nbsp;<em>http://имя_вашего_сервера/postfixadmin/setup.php</em>, установка должна завершиться без ошибок. В конце вас попросят ввести пароль для завершения настройки postfixadmin. Его нужно запомнить, он пригодится дальше при создании учетной записи администратора.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-14.png" alt="Пароль установки postfixadmin" class="wp-image-4198"/></figure></div>



<p>У вас сгенерируется строка:</p>



<pre class="wp-block-preformatted">$CONF['setup_password'] = 'cf1b85fba4ee3ffcc9efd8d098e335:ef221c19697ef4208b52d61ab75b0586560b9b';</pre>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-15.png" alt="хэш пароля установки" class="wp-image-4199"/></figure></div>



<p>Ее нужно изменить в&nbsp;<em>/var/www/postfixadmin/config.inc.php</em>, записав новое значение. Теперь используя ранее придуманный пароль вам нужно добавить учетную запись администратора postfixadmin. Я рекомендую использовать для этого уже существующую учетную запись postmaster. Хотя это не обязательно. Вы можете в web панели iredmail сделать нового пользователя и воспользоваться этой учетной записью. Заходим в postfixadmin по адресу&nbsp;<em>http://имя_вашего_сервера/postfixadmin</em></p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-16.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-16-1024x446.png" alt="Логин в postfixadmin" class="wp-image-4200"/></a></figure></div>



<p>Все, установка и настройка postfixadmin завершена. Теперь покажу, что мы в итоге получили. Во-первых, тут вы можете создавать новых пользователей и управлять существующими. Создадим новый алиас test@m.zeroxzed.ru и направим всю почту, отправленную на этот адрес в почтовый ящик user1@m.zeroxzed.ru. Для этого идем в раздел&nbsp;<strong>Обзор -&gt; Создать алиас</strong>&nbsp;и создаем его.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-17.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-17-1024x526.png" alt="Создание алиаса в postfix" class="wp-image-4201"/></a></figure></div>



<p>Почтовый ящик user1 должен существовать. Теперь отправим письмо на адрес test@m.zeroxzed.ru и посмотрим лог.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-18.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-18.png" alt="Лог postfix отправки письма на алиас" class="wp-image-4202"/></a></figure></div>



<p>Письмо было доставлено в почтовый ящик user1. Здесь я заметил одну неприятную особенность. В логе нигде не отражено, что изначально письмо было отправлено на адрес test@m.zeroxzed.ru, указан только конечный получатель. Это неудобно, когда нужно будет разбирать какую-нибудь ситуацию по логам. Я сейчас не смог вспомнить, от чего зависит такое поведение, но когда я руками все настраиваю, потом в логах вижу сообщение о том, что изначально письмо было отправлено на test, а потом уже доставлено в user1. С этим надо будет разобраться отдельно. Буду рад подсказке по этому поводу, чтобы самому не искать.</p>



<p>Теперь сделаем так, чтобы копия всех писем, отправленных user1 падала в ящик к user2. Для этого открываем список всех пользователей домена, выбираем нужного пользователя и жмем Алиас.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-19.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-19-1024x778.png" alt="Настройка пересылки почты в postfix" class="wp-image-4203"/></a></figure></div>



<p>В поле Кому вводим ящик user2@m.zeroxzed.ru. Отправляем снова письмо на user1 и смотрим лог.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-20.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-20.png" alt="Лог перенаправления письма" class="wp-image-4204"/></a></figure></div>



<p>Видно, что письмо было доставлено обоим пользователям.</p>



<p>Через postfixadmin вы можете добавлять новых администраторов для управления доменом, новые виртуальные домены, создавать пользователей и алиасы. В принципе, web интерфейс бесплатной версии iredmail вам больше не нужен. Его функционал беднее. Postfixadmin полностью его заменяет. Остальные возможности postfixadmin посмотрите сами, расписывать не хочется. Статья и так получается очень большой, а разбивать на части не хочется, чтобы не нарушать целостную картину.</p>


</br>



<h2 class="wp-block-heading">Тонкая настройка почтового сервера</h2>



<p>В завершении хочу затронуть несколько полезных моментов в настройке почтового сервера на базе postfix, которые не были рассказаны в других разделах.</p>



<h3 class="wp-block-heading">Максимальный размер письма</h3>



<p>Важным параметром является максимально разрешенный размер письма. В бесплатной версии для его изменения нужно отредактировать конфигурацию postfix. Сделать это не трудно. За размер письма отвечает параметр в файле&nbsp;<em>/etc/postfix/main.cf</em>&nbsp;—&nbsp;<strong>message_size_limit = 15728640</strong>. Размер указан в байтах. Значение по-умолчанию 15 мегабайт. Мне кажется удобнее будет установить его в 20 мегабайт. Слишком большое значение не ставьте, пользователи забьют свои почтовые ящики огромными вложениями и это осложнит администрирование сервера. После изменения параметра необходимо перечитать конфигурацию postfix.</p>



<pre class="wp-block-preformatted"># postfix reload
postfix/postfix-script: refreshing the Postfix mail system</pre>



<h3 class="wp-block-heading">Запрет на отправку писем конкретного пользователя</h3>



<p>Иногда бывают ситуации, когда нужно запретить отправку писем какому-нибудь пользователю. В iRedMail это можно сделать с помощью встроенного средства белых и черных списков. Для его работы должен быть включен модуль&nbsp;<strong>amavisd_wblist</strong>. Переходим в папку&nbsp;<em>/opt/iredapd/tools/</em>&nbsp;и используем скрипт&nbsp;<em>wblist_admin.py</em>&nbsp;для добавления запрета отправки писем.</p>



<pre class="wp-block-preformatted"># cd&nbsp;/opt/iredapd/tools/
#&nbsp;python wblist_admin.py – add – blacklist user1@m.zeroxzed.ru</pre>



<p>Этой командой мы запретили пользователю&nbsp;user1@m.zeroxzed.ru отправлять письма. При отправке письма он получит сообщение об ошибке, а в логе появится следующая запись.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-21.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-21.png" alt="blacklist в postfix" class="wp-image-4205"/></a></figure></div>



<p>При этом входящая почта будет нормально работать. Посмотреть весь черный список можно командой:</p>



<pre class="wp-block-preformatted">#&nbsp;python wblist_admin.py – list – blacklist</pre>



<p>Удаляем из черного списка командой:</p>



<pre class="wp-block-preformatted"># python wblist_admin.py – delete – blacklist user1@m.zeroxzed.ru</pre>



<p>К сожалению, во время тестирования заметил, что черный список на отправку работает только при работе из веб интерфейса. При подключении извне с помощью почтового клиента письма продолжают отправляться. Я потратил некоторое время на тесты и попытку разобраться, но так и не смог понять в чем дело. Для тех, кто разбирается в теме и будет пытаться решить этот вопрос подскажу, что разница между веб интерфейсом и почтовым клиентом в том, что первый способ подключения относится к mynetworks = 127.0.0.1, а удаленное подключение это sasl_authenticated. Во всех restrictions в postfix оба эти способа идут по порядку и должны по идее обрабатываться одинаково, один за другим, но не все так просто, раз существует проблема. White/Blacklist хранятся в mysql в базе amavisd. У меня, к сожалению, нет времени подробно разобраться с этой особенностью.</p>



<p>Этот же функционал можно реализовать стандартными возможностями postfix без сторонних модулей. Я этот делал, когда было нужно. Если получится, то расскажу об этом со временем.</p>



<h3 class="wp-block-heading">Каталог с почтовыми ящиками</h3>



<p>По-умолчанию, вся почта хранится в каталоге&nbsp;<em>/var/vmail/vmail1/m.zeroxzed.ru</em>, а дальше немного странная структура. Например, ящик пользователя user1 будет находиться по адресу&nbsp;<em>/var/vmail/vmail1/m.zeroxzed.ru/u/s/e/user1-2016.11.06.14.08.39</em>, пользователя postmaster —&nbsp;<em>/var/vmail/vmail1/m.zeroxzed.ru/p/o/s/postmaster-2016.11.06.13.22.15</em>. Со слов разработчиков, такая структура позволяет повысить быстродействие системы. Наверно это актуально, когда у вас тысячи ящиков. Мне кажется гораздо удобнее структура, когда все ящики лежат в одной папке с именем домена. Даты создания ящиков лично мне тоже не нужны.</p>



<p>Уточню, что описанная выше проблема актуальна только для ящиков, созданных web панелью iRedMail. Postfixadmin по-умолчанию создает ящики так, как мне нужно — все в папке с именем домена. Так что если вы будете пользоваться только postfixadmin, можно ничего не делать. Но я для порядка изменю настройки iredmail на всякий случай, чтобы не было путаницы.</p>



<p>Чтобы привести структуру новых создаваемых ящиков к привычному виду, отредактируем файл&nbsp;<em>/var/www/iredadmin/libs/default_settings.py</em>. Изменим там два параметра.</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/var/www/iredadmin/libs/default_settings.py</pre>



<pre class="wp-block-preformatted">MAILDIR_HASHED = False
MAILDIR_APPEND_TIMESTAMP = False</pre>



<p>Теперь новые почтовые ящики будут располагаться по адресу&nbsp;<em>/var/vmail/vmail1/site.ru</em>, не зависимо от того, где были созданы. Для того, чтобы изменить пути уже созданных ящиков, необходимо отредактировать путь в mysql базе&nbsp;vmail, в таблице mailbox, в столбце maildir.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-22.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-22-1024x444.png" alt="Адреса локальных папок почтовых ящиков postfix" class="wp-image-4206"/></a></figure></div>



<p>После изменения в базе данных, папку с ящиком можно просто перенести в новое место. Даю эту информацию для справки. Большого смысла в этом нету, можно оставить как есть.</p>


</br>



<h3 class="wp-block-heading">Создание копий всех почтовых сообщений postfix</h3>



<p>Воспользуемся штатной возможностью почтового сервера postfix — bcc. С помощью этой настройки мы сможем направить всю входящую и исходящую почту в отдельные почтовые ящики. Создадим их перед этим. В моем случае ящики будут называться:</p>



<ul><li>all-in@m.zeroxzed.ru для входящей почты</li><li>all-out@m.zeroxzed.ru для исходящей почты</li></ul>



<p>Идем в phpmyadmin, открываем базу vmail и выполняем в ней запрос:</p>



<pre class="wp-block-preformatted">INSERT INTO sender_bcc_domain (domain, bcc_address, active, created) VALUES ('m.zeroxzed.ru', 'all-out@m.zeroxzed.ru', 1, NOW());
INSERT INTO recipient_bcc_domain (domain, bcc_address, active, created) VALUES ('m.zeroxzed.ru', 'all-in@m.zeroxzed.ru', 1, NOW());</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-23.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-23.png" alt="Настройка сбора почты в postfix" class="wp-image-4207"/></a></figure></div>



<p>Первая строка для сбора всей исходящей почты, вторая для сбора входящей. Не забудьте изменить названия домена и ящиков на свои значения. Если у вас несколько виртуальных доменов, делайте для каждого отдельные ящики. Можно сделать вообще просто — собирать абсолютно всю почту, проходящую через postfix в один ящик. Но это очень неудобно. Будет огромный ящик с тысячами файлов внутри. Там банально даже найти что-то станет проблемой, так как поиск будет выполняться очень долго. Я когда только начинал настраивать почтовые сервера так сделал, но быстро понял ошибку и переделал.Я рекомендую использовать такие ящики для оперативного доступа к почте, чтобы быстро проверить, кому что приходило или уходило, если вдруг возникает вопрос, что пользователь не может найти письмо. Иногда он может либо по ошибке, либо специально, его удалить. Чтобы быстро осуществлять поиск по ящику, там не должно быть много писем. Я рекомендую скриптами регулярно архивировать почту из таких ящиков и складывать в архивы, а в ящике оставлять комфортное для быстрого поиска количество писем. В зависимости от загрузки сервера, это может быть архив за пару недель или пару месяцев.</p>



<p>Теперь на всякий случай проверьте, как работает функция сбора всей входящей и исходящей почты. Посмотрите на лог файл postfix, там должна быть информация о том, что письмо направлено в том числе и в резервный ящик. В эти ящики будет попадать внешняя переписка и внутренняя. В самих письмах не будет никакой информации о том, что куда-то была отправлена еще копия, пользователи об этом знать не будут.</p>



<h3 class="wp-block-heading">Настройка автоответчика</h3>



<p>Рассмотрим еще одну возможность, полезную в обычной работе — настройка автоответчика. Например, пользователь заболел или ушел в отпуск. В его почтовом ящике делается специальная настройка, которая при входящем письме шлет автоответ с заготовленным текстом отправителю. При этом есть возможность направить копию входящего письма на другой ящик, например заместителя на время отсутствия на работе коллеги.</p>



<p>Настраивается автоответ через roundcube. Для этого заходите под своей учетной записью, переходите в раздел настройки и там выбирайте меню Отпуск.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-24.png" alt="Настройка автоответа в postfix" class="wp-image-4208"/></figure></div>



<p>На вкладке дополнительные настройки можно указать адрес для отправки копий.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-25.png" alt="Дополнительные настройки пересылки почты" class="wp-image-4209"/></figure></div>



<p>Сохраняете настройку и проверяете на всякий случай. Все должно работать. Загляните так же в лог и убедитесь, что письмо отправляется теперь помимо адресата, бэкапных ящиков, еще и в ящик заместителя. Хорошая и полезная возможность, рекомендую ее использовать. Напишите небольшую инструкцию для пользователей, пусть сами заходят и настраивают автоответ и переадресацию.</p>



<p>На этом, пожалуй, заканчиваю настройку почтового сервера на centos на базе iredmail и postfix.</p>



<h2 class="wp-block-heading">Анализ лог файлов postfix с помощью webmin</h2>



<p>Для поиска информации в лог файле poistfix удобно использовать плагин&nbsp;<strong>webmin</strong>&nbsp;для просмотра системных логов. После установки в разделе System -&gt; System logs можно посмотреть системные логи, в том числе maillog. Удобство этого модуля заключается в том, что зная, к примеру, id писmма, можно вывести все строки с этим id. Это очень удобно для анализа различных ситуаций.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-26.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/centos-iredmail-postfix-26-1024x293.png" alt="Анализ лог файла postfix" class="wp-image-4243"/></a></figure></div>



<p>Лог файл почтового сервера очень насыщен и там на каждую секунду куча событий. Без удобного фильтра сообщений трудно разбираться в ситуации. Приходится либо в консоли грепать лог файл, либо куда-то его копировать и анализировать в более удобных текстовых редакторах. Я лично привык использовать webmin для этих целей. Мне кажется это удобным. Особенно удобно, когда нужно несколько файлов просматривать одновременно. Я их просто открываю в разных вкладках браузера и анализирую. Главное отключить в настройках модуля поиск по сжатым файлам. Это очень сильно замедляет процесс, но иногда серьезно выручает, когда нужно поискать по всем лог файлам за последнюю неделю. Поиск по сжатым файлам я включаю по необходимости, постоянно его не использую.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Подведем итог работы по настройке почтового сервера. Я постарался рассмотреть наиболее полезные и значимые возможности и настройки на основе своего опыта эксплуатации почтовых серверов postfix. Конечно, я не раскрыл всех нюансов. Отдельно надо рассмотреть вопрос бэкапа почтового сервера, а точнее почтовых ящиков пользователей. Там есть свои нюансы и сложности. Связаны они в первую очередь с тем, что каждое письмо это отдельный файл. Офис человек в 100-150 генерирует очень много почтового трафика, который будет состоять из десятков тысяч файлов в месяц. А за 5 лет накопятся терабайтные архивы очень важных писем менеджеров, которые нужно будет где-то хранить и быстро отдавать пользователям. Если случится проблема на сервере, то оперативно восстановить из бэкапа почтовый архив не получится, если у вас не бюджетное аппаратное решение дисковой подсистемы. Тут нужны свои подходы и хитрости. По возможности буду ими делиться.</p>



<p>Есть еще много более ли менее полезных функций и возможностей, которые можно добавить и использовать. Например, борьба со спамом штатными возможностями postfix с помощью разных restrictions. Отдельно надо рассматривать вопрос общих почтовых папок, это может быть интересно и полезно. Вопрос сертификатов и dkim я не затронул вообще. По мере возможностей, постараюсь раскрывать эти темы и делиться опытом. Но все не успеваю. Ко мне опыт приходит быстрее, чем я успеваю им делиться <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Очередь из статей и планов уже очень большая выстроилась.</p>



<p>На этом заканчиваю, надеюсь вам будет полезна моя статья. Я писал ее почти неделю с разной интенсивностью, обдумывая нюансы и подбирая полезные вещи. Буду рад комментариям, а особенно подсказкам и каким-то советам по улучшению работы и расширению функционала почтового сервера. Может кто-то поделится своим личным опытом. Сухих инструкций много, в них нет недостатка, а личным опытом делятся гораздо реже, но он очень ценен.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-iredmail-%d0%bd%d0%b0-centos-7/">Настройка почтового сервера iRedMail на CentOS 7</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bf%d0%be%d1%87%d1%82%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-iredmail-%d0%bd%d0%b0-centos-7/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Кэширование страницы с использованием Disk: Enhanced 
Минифицировано с помощью Disk
Кэширование БД с использованием Disk (Request-wide (широкий запрос) modification query)

Served from: clip-clap.ru @ 2026-07-03 04:14:01 by W3 Total Cache
-->