Настройка почтового сервера Linux
Обновлено: 13.01.2025Последнее изменение: 03 апреля 2013 года.
Вступление
Это первая статья по настройке почтового сервера на Linux в составе Dovecot 2.0.9, Postfix 2.6.6, базой данных MySQL, интерфейсом администрирования PostfixAdmin, веб-интерфейсом к почте RoundCube и все это на CentOS 6.3.
Вообще, эту и все связанные с ней статьи я пишу для того, чтобы задокументировать всякие тонкости, с которыми я сталкивался при настройке почтового сервера на CentOS. А заодно уж и поделюсь с общественностью приобретенным опытом. Несмотря на то, что все в этой статье прошло проверку не раз и не два, вы должны понимать, что от релиза к релизу что-то чуть-чуть меняется, от того, прописано у вас имя хоста или нет, где-то что-то может сработать не так, как здесь написано. Директория /var/log/ должна стать вашим хорошим знакомым :) В этом нет ничего страшного.
Я уже где только не предлагал - скажу еще раз - есть отличный проект iRedMail.org, с помощью которого вы можете легко и просто установить все, что описано ниже и даже намного больше. Я тестировал этот продукт, мне понравилось. По-крайней мере, вы получаете на своем любимом дистрибутиве работающий почтовый сервер. И не за 2-3 дня, а сразу. А зачем я тогда писал эту и сопутствующие статьи? Мне не нужны антиспамы и прочее для внутреннего корпоративного сервера. Мне не нужны куча привязок и заморочек, так что обновить что-либо достаточно непросто. Наконец, я хочу понимать, что происходит в моем сервере.
Для кого это руководство? Для начинающих системных администраторов, у которых куча вопросов, нехватка времени и желание получить все и сразу. Совсем сразу не выйдет, но большинство вопросов тут описано.
Оглавление
- Установка базы данных MySQL, в которой будем хранить настройки пользователей, список доменов и пр.
- Установка веб-сервера Apache для доступа к инструментам управления почтовым сервером
- Установка PostfixAdmin для управления почтовым сервером (пользователи, виртуальные домены и др.).
- Postfix - МТА, отвечает за доставку почты (SMTP).
- Dovecot - IMAP, POP3, авторизация, хранение почты.
Итак, поехали!
Предварительная настройка сети в CentOS
На свежеустановленной системе (например, из дистрибутива minimal, без X-Window) перед началом настройки проверьте настройки сети:
> ifconfig
Если сетевой интерфейс не активен (в выводе только lo), то надо подправить файл:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
a) адрес сети получаем через DHCP (пример):
DEVICE="eth0"
BOOTPROTO="dhcp"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
б) адрес сети установлен вручную (пример):
DEVICE="eth0"
BOOTPROTO="static"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=192.168.1.2
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
NETWORK=192.168.1.0
NOZEROCONF=yes
DNS-сервер:
# vi /etc/resolv.conf
nameserver 127.0.0.1
nameserver your_provider_dns_ip
Шлюз по-умолчанию:
# vi /etc/sysconfig/network
GATEWAY=192.168.1.1
После этого перезагрузите компьютер и попробуйте пропинговать, например, yandex.ru. Если все ок, идем дальше, непосредственно к программному обеспечению.
1. Установка MySQL
Как вариант, посмотрите здесь.
1.1 Установка и минимальная настройка
# yum install mysql-server mysql-devel
# service mysqld start
# /usr/bin/mysql_secure_installation
На этом шаге:
1) установили пароль на root:
Set root password? [Y/n] y
New password: mySQL_passWord
2) удалили анонимный вход:
Remove anonymous users? [Y/n] y
... Success!
3) ограничили вход только localhost:
Disallow root login remotely? [Y/n] y
... Success!
4) удалили тестовую базу и безпарольный вход:
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
5) обновили новые настройки:
Reload privilege tables now? [Y/n] y
... Success!
1.2 Создание базы данных для Postfix и Dovecot
[root@localhost ~]# mysql -p
Enter password:
mysql> CREATE DATABASE mail;
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfixPassword';
mysql> GRANT ALL PRIVILEGES ON `mail`.* TO 'postfix'@'localhost';
mysql> exit
Дальше никакие таблицы создавать НЕ НАДО. Для этого мы установим PostfixAdmin и веб-сервер для управления базой данных почтового сервера.
Следующий шаг: установка веб-сервера.
2. Установка Apache
Собственно, сам веб-сервер:
> yum install httpd
Необходимые библиотеки:
> yum install php
> yum install php-mysql
> yum install php-mbstring
> yum install php-imap
3. Установка PostfixAdmin
Скачиваем архив с сайта (на 03.04.12 это будет версия 2.3.5):
> cd /var/www/html
> wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz
> tar xvfz postfixadmin-2.3.5.tar.gz
Получаем папку /var/www/html/postfixadmin-2.3.5/
Дальше создадим ссылку на эту версию postfixadmin и отредактируем файл начальной конфигурации PostfixAdmin:
> ln -s /var/www/html/postfixadmin-2.3.5/ /var/www/html/postfixadmin/
> nano /var/www/html/postfixadmin/config.inc.php
В файле изменяем:
$CONF['configured'] = true; // По-умолчанию, false
$CONF['database_name'] = 'mail'; // По-умолчанию, postfix
$CONF['database_password'] = 'postfixPassword'; // Пароль от пользователя postfix в базе данных.
$CONF['encrypt'] = 'dovecot:CRAM-MD5';
Закрываем файл, перезапускаем веб-сервер:
> service httpd restart
Открываем в браузере адрес вида: http://почтовый_сервер/postfixadmin/setup.php
service iptables stop
".Также вы можете столкнуться с неявными проблемами, которые создаст вам SELinux, который охраняет вашу систему от нестандартного поведения служб, а вы как раз эти службы терзаете почем зря. Поэтому рекомендую отключить SELinux на время настройки. Делается это разными способами:
- Временное отключение (до перезагрузки):
# setenforce 0
или
# echo 0 > /selinux/enforce
- Выключить насовсем - в файле
/etc/selinux/config
изменить параметрSELINUX=disabled
Перезагрузить компьютер.
Запоминаем пароль от настроек PostfixAdmin ("postfixAdminPassword") и жмем "Generate password hash".
Получаем ответ:
If you want to use the password you entered as setup password, edit config.inc.php and set
$CONF['setup_password'] = '785c37b013896e6d19dc57ecec:60965d6fe4d785c37b013a65a9836bf877aceecb';
Вставляем этот текст в конфигурационный файл, сохраняемся, возвращаемся в браузер, вводим наш пароль от настроек PostfixAdmin и данные нового суперпользователя PostfixAdmin, для дальнейшего управления через веб-интерфейс.
Я введу email "admin@mailserver.local" и пароль "adminPassword".
Почтовый адрес
Некорректный адрес администратора!
Это может произойти от того, что email может не резолвится, например, если вы ввели название виртуального домена "от балды". Для того, чтобы postfixadmin не проверял доменное имя, надо в файле
config.inc.php
поменять параметр $CONF['emailcheck_resolve_domain']
с 'YES'
на 'NO'
. Вот и все.Пробуем залогиниться со страницы: http://почтовый_сервер/postfixadmin/
По идее, у вас не возникнет проблем, потому что раз уж вы дошли до этого шага, то все у вас в порядке.
Так, кратко резюмируем: у нас есть база данных, в которой сохраняются виртуальные пользователи, домены, пароли и пр.
Если вы забыли логин/пароль суперпользователя postfixadmin (который вы вводите на странице http://бла-бла-бла/postfixadmin/ ), вы можете сделать вот что:
1. Узнать логин (логины) суперпользователя postfixadmin:
# mysql -u root -p
mysql> use mail;
mysql> select * from admin;
Поле username - это логин. Поле password - хеш пароля.
2. Сброс пароля суперпользователя postfixadmin:
В файле postfixadmin/config.inc.php ищем параметр $CONF['encrypt']'.
Его значение - тиш хеширования. В зависимости от него, генерируем пароль с помощью команды.
Например, если $CONF['encrypt'] = 'dovecot:CRAM-MD5' то новый пароль сгенерируем так:
# dovecot pw -s CRAM-MD5 -p testTEST123 | sed 's/{CRAM-MD5}//'
2858fffd54326fff886f30f05357d4d690cf61f6583533a6f5b1f30f7dea1cd2
Полученную строку подставляем в поле password нашего суперюзера postfixadmin (например, это может быть admin@mailserver.local):
mysql> update admin set password='2858fffd54326fff886f30f05357d4d690cf61f6583533a6f5b1f30f7dea1cd2' where username='admin@mailserver.local';
Теперь администратор postfixadmin "admin@mailserver.local" имеет пароль "testTEST123". Логинимся, меняем его на нормальный пароль. Почему сразу не сделать хороший пароль? Потому что мы все команды вводим в консоли и если не стереть всю историю команд, наш пароль будет виден всем, кто может работать в консоли.
Теперь самое время перейти к главному - к установке и настройке собственно почтового сервера.
Начем, пожалуй, с сервера SMTP - Postfix.
Бонус!!! Лучше всего ставить после установки Postfix и Dovecot.
Ставим Roundcubemail
Вообще, я ставил его уже после того, как заработал почтовый сервер, но, плодить кучу мануалов нет смысла.
Сразу могу порекомендовать оригинал инструкции по установке Roundcubemail.
Итак, скачиваем архив последней версии, распаковываем его, удаляем файл ахива и ждем указаний:
> mkdir /var/www/html/webmail
> cd /var/www/html/webmail
> wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/0.7.2/roundcubemail-0.7.2.tar.gz
> tar xvfz roundcubemail-0.7.2.tar.gz
> mv roundcubemail-0.7.2 roundcubemail
> rm roundcubemail-0.7.2.tar.gz
> cd /var/www/html/webmail/roundcubemail
Ок, у нас есть заготовка по адресу /var/www/html/webmail/roundcubemail/
Копируем оригиналы конфигов (мало ли что?):
> cp config/db.inc.php.dist config/db.inc.php
> cp config/main.inc.php.dist config/main.inc.php
Создаем базу данных Roundcubemail:
> mysql -p
Enter password:
mysql> CREATE DATABASE roundcubemail;
mysql> CREATE USER 'roundcubemail'@'localhost' IDENTIFIED BY 'roundCubePassword';
mysql> GRANT ALL PRIVILEGES ON `roundcubemail`.* TO 'roundcubemail'@'localhost';
mysql> exit
Правим config/main.inc.php:
$rcmail_config['default_host'] = 'localhost';
$rcmail_config['imap_auth_type'] = PLAIN;
$rcmail_config['smtp_server'] = '';
$rcmail_config['enable_installer'] = true; (после установки изменить на false!!!)
Правим config/db.inc.php:
$rcmail_config['db_dsnw'] = 'mysql://roundcubemail:roundCubePassword@localhost/roundcubemail';
Ставим необходимые расширения php:
yum -y install php-dom php-intl
Пользователь, от имени которого запускается веб-сервер, должен иметь возможность записывать в директории temp и logs:
# chown -R apache:apache /var/www/html/webmail/roundcubemail/logs
# chown -R apache:apache /var/www/html/webmail/roundcubemail/temp
# ls -al /var/www/html/webmail/roundcubemail/
Запускаем установщик http://почтовый_сервер/webmail/roundcubemail/installer/
Инициализируем базу данных нажатием кнопки «Initialize Database».
Проверяем отправку и авторизацию стандартными средствами Roundcubemail.
На этом этапе может быть будут всякие мелочи, их лучше решить сразу и не идти дальше. Например, если у вас пароли не PLAIN, а, скажем, MD5 или еще как, у вас могут возникнуть проблемы. В принципе, именно из-за этого я был вынужден отказаться от шифрования паролей. Мы все-таки состыковываем кучу софта (веб-морду, dovecot, postfix, mysql, потом возможно еще что-то), и различия в терминах алгоритмов шифрования и др. делают работу с зашифрованными паролями настолько трудной, что я пока забил на это. Если кто-то знает работающую схему шифрования паролей, в комментариях напишите об этом и опишите как вы это сделали. Мы работаем для себя и для всех, по крайней мере, на этом сайте!
После прохождения тестов Roundcube напишет вам такое:
After completing the installation and the final tests please remove the whole installer folder from the document root of the webserver or make sure that enable_installer option in config/main.inc.php is disabled.
These files may expose sensitive configuration data like server passwords and encryption keys to the public. Make sure you cannot access this installer from your browser.
Запрещаем повторную переустановку приложения в main.inc.php:
$rcmail_config['enable_installer'] = false;
Удаляем установщик:
# rm -f -r /var/www/html/webmail/roundcubemail/installer
Заходим по адресу http://почтовый_сервер/webmail/roundcude/ и наслаждаемся web интерфейсом.
Обратите внимание: доступ через веб-сайт к каталогу config
должен быть запрещен!. Для этого надо в конфиге Apache изменить "AllowOverride None" на "AllowOverride All", чтобы файл .htaccess
, поставляемый вместе с Roundcube, заработал.
Как снять защиту с документа Word
Обновлено: 13.01.2025! Эта статья не поможет вам решить проблему вируса шифратора, к сожалению. От этих зловредов спасет только здравый смысл и бекап. Кстати, если вы думаете, что бекап в расшаренную папку в офисной сети или на диск D: это панацея - вы ошибаетесь. Вирус легко может пройтись и по шарам, доступным для текущего пользователя.
Снять защиту с документа Word, защищенным, например, от редактирования или печати, можно без всяких программ для снятия защиты, не надо думать, какой вирус вы поставите в свою систему вместе с этим софтом. Итак...
Защищенный документ Word сохранить как HTML
Запустите программу Microsoft Word, выполните команду «Файл» – «Открыть» либо нажмите кнопку «Открыть» на стандартной панели инструментов. Выберите документ, который необходимо разблокировать. Чтобы убрать защиту документа Word, выполните команду «Файл» – «Сохранить как». Выберите место сохранения, тип файла установите «Веб-страница» и нажмите «Ок». После этого можно выполнить снятие защиты документа Word.
Откройте папку, в которую вы сохранили документ как веб-страницу. Этот файл будет иметь расширение HTML. Щелкните правой кнопкой мыши на этом документе, выберите команду «Открыть с помощью», чтобы убрать защиту документа, выберите программу Notepad. Найдите с помощью команды «Поиск по» в коде документа следующий тэг: <w:UnprotectPassword>, в этом тэге, в свою очередь, найдите строку, она будет выглядеть приблизительно таким образом: w:nprotectPassword>ABCDEF01</w:UnprotectPassword>. Между тэгами и будет пароль для изменения документа. Чтобы убрать пароль из документа, скопируйте его в буфер обмена, далее откройте документ в программе Word и разблокируйте, используя найденный пароль.
HEX-редактор снимет защиту!
Также можно открыть документ в шестнадцатеричном редакторе, найти значение пароля, перезаписать его четырьмя 0x00. Далее откройте документ в Word, и используйте пустой пароль, чтобы убрать защиту документа.
Снять защиту с документа путем [DOC ->] DOCX -> ZIP -> DOCX
[DOC ->] означает, что если вам надо снять защиту с документа, уже в формате DOCX, то этот шаг можно пропустить и сразу менять расширение файла на ZIP.
Сохраните документ в формате .docx. Измените расширение файла на .zip (вызовите контекстное меню на файле, нажмите «Переименовать», удалите .docx, вместо этого впишите .zip). Откройте полученный архив, выделите файл settings.xml, нажмите кнопку «Извлечь». Откройте данный файл с помощью текстового редактора, найдите следующий тег <w:documentProtection ... />, удалите его. Далее добавьте файл settings.xml в архив, подтвердите замену файла. Переименуйте архив в файл с расширением .docx. Откройте документ в программе Word – защита снята.
Источник: kakprosto.ru
PS: Кстати, аналогично снимается защита и с документов Exel.
Hamachi - виртуальные сети легко и просто
Обновлено: 13.01.2025Автор: Иванов Илья, сайт http://bozza.ru, дата публикации 28.03.2012.
Задача: нужно объединить несколько компьютеров в сеть. Но при этом один из компьютеров подключен в Москве через ADSL, а другой в Берлине... Все без внешних IP. За этими компьютерами сидят ваши хорошие знакомые - юрист и повар. Объснять им, что такое VPN - себе дороже :) Я не придумал ситуации, в которой этих людей может быть надо объединить в сеть... ну, например, погамиться в какую-нибудь игру, но не на публичном сервере. Вот!
По сценарию, вы - опытный общий друг этих людей. Вы понимаете, что такое VPN. Условно вас будем называть администратором виртуальной сети друзей!
Итак, вы, как администратор сети, должны соединить компьютеры в сеть. Для этого мы будем использовать бесплатную и хорошо известную программу Hamachi.
Готовим виртуальную сеть в Hamachi
Нам нужно создать VPN сеть поверх интернета. причем максимально просто и удобно. Открываем сайт https://secure.logmein.com/RU/products/hamachi/, регистрируемся и входим в свой аккаунт. Нам даже не потребуется скачивать Hamachi на наш компьютер (по крайней мере, сразу не потребуется).
Выбираем "Создать сети" и создаем ячеистую сеть с именем "my_test_bozza_network":
Устанавливаем базовые настройки для вашей сети:
- добавлять членов сети только из веб-интерфейса
- придумываем пароль (в нашем случае он не потребуется, но все равно придумываем!)
- выбираем бесплатную подписку на 5 хостов
Ок, наша сеть готова, надо добавить в нее хосты - наших друзей!
Щелкаем "Мои сети" (слева), потом "Добавить клиента". Выбираем пункт "Развернуть LogMeIn Hamachi на удаленном компьютере (компьютерах)":
Далее мы указываем количество планируемых установок программы-клиента Hamachi на компьютеры друзей (3 установки), указываем, чтобы они сразу становились членами сети "my_test_bozza_network":
На следующей странице вы получите ссылку вида https://secure.logmein.com/hamachi/ih1.asp?lang=ru&c=0023023020320302032030сссссссссс, которую надо любым способом передать вашим друзьям, например, по почте. Когда ваши друзья откроют эту ссылку в своем браузере, они смогут скачать и установить уже настроенный клиент.
Удаленный клиент ставит у себя необходимое ПО
Далее в вирутальной машине я имитирую действия вашего друга, получившего вашу ссылку и открывшего ее в браузере:
После нажатия на кнопку "Продолжить" будет предложено скачать Hamachi в виде установочного пакета на свой компьютер. Соглашаемся, запускаем, далее, далее, ставим галочку "Добавить ярлык на рабочий стол", оставляем галочку "Запустить Hamachi". Получим:
Теперь эту процедуру должны выполнить все остальные друзья. Я для простоты сделал это только еще один раз, но суть от этого не меняется.
Вот пример того, как может выглядеть клиент 2:
Теперь компьютеры наших двух друзей включены в одну общую сеть. Они могут пинговать друг друга, расшаривать папки, принтеры и пр.
А мы в своем веб-интерфейсе управления можем подключать их к нашей виртуальной сети, отключать... в общем, править миром, чем как правило и занимаются системные администраторы:
Послесловие
Прошу прощение за изобилие водяных знаков, но уже сталкивался с несоблюдением авторства, поэтому вынужден так грубо испортить плоды своего же труда.
Скачать Hamachi можно со страницы https://secure.logmein.com/RU/products/hamachi/. Это лучше, чем скачивать Hamachi с других источников, т.к. вы скачиваете не просто программу, а программу, которая будет объединять ваши компьютеры (читайте, приватные данные) через интернет. Думайте сами, где вероятнее всего не подцепить вирус или шпиона.
Все-таки внесу-ка немного сумятицы. Дело в том, что несмотря на заверения программы-производителя LogMein о шифровании стойкими ключами, о неподкупности сотрудников и надежности физически изолированных серверов (это я взял из руководства по безопасности Hamachi, на англ. языке, называется "LogMein Белай книга по безопасности" - хехе, назвали бы ее "Черной Книгой Великого Хакера"), фактически весь начальный трафик все равно идет через их сервера. Т.е. они представляют собой широко разрекламированный MIM (Man in the Middle). Что это такое, объяснять уже почти никому не надо. Вот и получается, что либо надо просто им довериться или пользоваться только для домашних целей, что я и описал выше.
Если вам бедет необходимо создавать такие фишки для работы, все-таки более предпочтительным все еще можно считать настройку своего VPN-сервера (например, OpenVPN) и раздавать клиентам готовые конфиги. Это сложнее, не спорю. Но это 100% ваш сервер. Ну вот, немного пофлудил, буду ждать отзывов и комментариев!
Определение открытых портов и запущенных процессов Unix
Обновлено: 13.01.2025В этой заметке я приведу примеры использования команд unix, которые могут быть использованы значительно шире описанного здесь. Фактически, я просто приведу примеры. Если у вас есть удобные и полезные вам ключи / команды - пишите в комментариях!
LSOF
lsof - это утилита, служащая для вывода информации о том, какие файлы используются теми или иными процессами. Поможет, если надо связать окрытые порты со службами.
Примеры:
-
lsof -i 4 -a -p 1234
(просмотр всех соединений IPv4, открытых процессом с PID = 1234) -
lsof /dev/hd4
(Список открытых файлов на устройстве /dev/hd4) -
lsof /dev/cdrom
(Список процессов, работающих с CD ROM) -
lsof -c ssh
(Список подключений по ssh) -
lsof -ni | grep ssh
(Еще один способо получить список подключений по ssh)
выдаст нечто вроде
sshd 2599 root 3u IPv6 8613 TCP *:22 (LISTEN)
sshd 3924 root 3u IPv6 9286804 TCP 10.8.0.181:22->10.8.0.178:nat-stun-port (ESTABLISHED)
sshd 3926 myuser 3u IPv6 9286804 TCP 10.8.0.181:22->10.8.0.178:nat-stun-port (ESTABLISHED)
sshd 15109 root 3u IPv6 10572657 TCP 10.8.0.181:22->10.8.0.178:4461 (ESTABLISHED)
sshd 15111 myuser 3u IPv6 10572657 TCP 10.8.0.181:22->10.8.0.178:4461 (ESTABLISHED)
sshd 22818 root 3u IPv6 10632880 TCP 10.8.0.181:22->10.8.0.178:8151 (ESTABLISHED)
sshd 22820 myuser 3u IPv6 10632880 TCP 10.8.0.181:22->10.8.0.178:8151 (ESTABLISHED)
NETSTAT
Очень "обширная" утилита, приведу лишь примеры использования:
-
netstat -anp | grep 8080
выдаст нечто вроде
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 614/httpd
Проверка MX записей
Обновлено: 13.01.2025DIG
Команда доступна для unix-систем.
Формат: dig имя_домена тип_записи
Пример:
$ dig bozza.ru mx ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> bozza.ru mx ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49089 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 6 ;; QUESTION SECTION: ;bozza.ru. IN MX ;; ANSWER SECTION: bozza.ru. 7200 IN MX 10 mx.yandex.ru. ;; AUTHORITY SECTION: bozza.ru. 2824 IN NS ns2.usedns.com. bozza.ru. 2824 IN NS ns1.usedns.com. ;; ADDITIONAL SECTION: mx.yandex.ru. 2636 IN A 93.158.134.89 mx.yandex.ru. 2636 IN A 213.180.204.89 mx.yandex.ru. 2636 IN A 77.88.21.89 mx.yandex.ru. 2636 IN A 87.250.250.89 ns2.usedns.com. 1258 IN A 77.234.201.212 ns1.usedns.com. 2848 IN A 78.111.80.5
Видно, что единственная запись MX это mx.yandex.ru. Другой вопрос, что у mx.yandex.ru есть не один IP ;)
HOST
Команда доступна для unix-систем.
Формат: host -t тип_записи имя_домена
Пример:
$ host -t mx bozza.ru bozza.ru mail is handled by 10 mx.yandex.ru.
Кратко и по делу.
NSLOOKUP
Команда доступна в unix и windows системах.
Пример:
$ nslookup > set querytype=MX > bozza.ru Server: 192.168.0.1 Address: 192.168.0.1 Non-authoritative answer: bozza.ru MX preference = 10, mail exchanger = mx.yandex.ru bozza.ru nameserver = ns1.usedns.com bozza.ru nameserver = ns2.usedns.com ns2.usedns.com internet address = 77.234.201.212 ns1.usedns.com internet address = 78.111.80.5
Вводить команду чуть дольше, зато не надо заходить в консоль unix-системы, если вы работаете в Windows.
Online проверка MX
Если не интересно выполянть команды в консоли, можно воспользоваться online сервисом проверки MX записей. Например, http://mxtoolbox.com.
Он проверит, подсветит зелененьким, если все ок, предложит проверить в black list и др.
На странице http://mxtoolbox.com/NetworkTools.aspx сервис предложит вам кучу разных проверок (PTR, A, TXT, ping, header analizer и многие др.).
Но! Не всегда этот сервис выдаст вам те же результаты, что и проверка с консоли вашего сервера, т.к. чаще всего проверки начинаются тогда, когда что-то идет не так, а идти не так может как у "них", так и у "вас". А "у вас" лучше проверять с консоли того сервера, где возможны неполадки.
*****
Идею для этой заметки взял тут (неплохой, кстати, питерский хостинг).
Установка Google Chrome в домене Windows
Обновлено: 13.01.2025Если по каким-то причинам вы хотите установить в сети вашей организации браузер, отличный от IE, то на выбор есть, само собой, Opera, Mozilla Firefox и Google Chrome. Я не буду, ясное дело, даже пытаться сравнить эти браузеры - это вопрос религии. Но с точки зрения регулярной поддержки установленного у пользователей софта тут есть о чем подумать. А именно о том, сколько усилий вам придется прилагать для того, чтобы устанавливать регулярно (а в последнее время прямо-таки с пугающим ускорением) выходящие новые версии браузеров. Дома вы, скорее всего, сидите под админом, софт сам справляется, вы только соглашаетесь. А на работе все иначе - не дай Бог у большинства юзеров будут права администратора! Часть юзеров все равно вынуждены будут сидеть под админами (локальными, не доменными!!!), ну а что насчет той армии, которая ничего не соображая, давит на все "ок", которым вы оградили все и вся, но софт-то надо обновлять! Ведь через дырявый браузер даже без прав админа, даже с антивирусом, пусть даже с лицензионной Windows, они рано или поздно, словят какую-нибудь гадость.
Продолжение следует...
Перенос почты IMAP
Обновлено: 13.01.2025
Перенос почты при смене почтового сервера
При решении вопроса о смене почтового сервера часто на первый план выходит вопрос: а что сделать, чтобы почта из старого почтового сервера (например, Dovecot) перекочевала в новый (например, Kerio Connect). Или использовалась почта на стороннем хостинге, и было принято решение о переносе всей почты на другой сервер (в том числе, на другую платформу, MS -> Unix, например).
Если вся почта принималась по POP3 - вопросов особенно не будет, в этом случае проблема возникнет при тотальной смене почтовых клиентов. А мы рассмотрим случай, когда не очень большая организация работает с почтой по протоколу IMAP. В таком случае вопрос будет стоять следующим образом:
- Либо находим утилиту по переконвертированию писем со старой на новую платформу...
- либо делаем архив почты, а на новом сервере почта будет "с нуля"...
- либо (наш выбор) в цикле (или просто по очереди) автоматизированно копировать письма IMAP со старого почтового сервера на новый с помощью программы Imapsync.
В любом случае, вопросов будет много, и процесс смены почтового сервера - задача не из разряда легких. Это очень заранее запланированное мероприятие, с предварительными проверками и пр. Сразу становится понятным, почему в начале статьи я уточнил, что организация небольшая. В крупных компаниях, возможно, такой подготовленный штат системных администраторов, что они придумают что-то более быстродействующее. Для нас надо чтобы было попроще и без серьезных переконвертаций.
Imapsync
Итак, Imapsync (http://freshmeat.net/projects/imapsync).
Страница документации: http://ks.lamiral.info/imapsync/README
Imapsync поддерживает сохранение статуса "прочтено, не прочтено, удалено", вложенные почтовые папки и др. Imapsync написан на Perl и может быть запущен практически на любом компьютере, не обязательно запускать его на сервере. Т.е. вы можете произвести перенос почты удаленно по отношению и к старому, и к новому почтовым серверам. Вам не надо иметь доступ к консоли. Все, что необходимо - это протокол IMAP.
Схема действия такая:
- на новом почтовом сервере создаем учетные записи пользователей с паролями (пароли могут отличаться от паролей на старом почтовом сервере).
-
запускаем imapsync.
imapsync \
где:
--host1 <host1> --user1 <user1> --password1 <secret1> \
--host2 <host2> --user2 <user2> --password2 <secret2>
<host1> - почтовый сервер, откуда копируем почту,
<user1> - логин почтового аккаунта,
<secret1> - пароль почтового аккаунта,
<host2> - почтовый сервер, куда копируем почту,
<user2> - логин почтового аккаунта,
<secret2> - пароль почтового аккаунта
Опций на самом деле гораздо больше, эти - минимум. Можно указывать, использовать SSL или нет, минимальный размер писем, которые будут скопированы и много что еще. Я использовал только минимум опций - для переноса 10 почтовых ящиков этого может быть достаточно.
Если пароль содержит символ доллара ($), то выполнение из командной строки может привести к ошибке логина. В этой ситуации надо просто экранировать символ $ прямо в пароле.
Пример: вместо
--password1 Gmw$psdtRR
надо писать
--password1 Gmw\$psdtRR
Скорее всего, у вас не 10, а 30 и больше почтовых ящиков. В таких случаях ручной ввод команд - муторно и неудобно. Разработчик предлагает вариант:
Создаем файл с логинами/паролями file.txt:
user001_1;password001_1;user001_2;password001_2
user002_1;password002_1;user002_2;password002_2
user003_1;password003_1;user003_2;password003_2
user004_1;password004_1;user004_2;password004_2
user005_1;password005_1;user005_2;password005_2 ...
В Unix скрипт может выглядеть примерно так:
{ while IFS=';' read u1 p1 u2 p2; do
imapsync --host1 imap.side1.org --user1 "$u1" --password1 "$p1" \
--host2 imap.side2.org --user2 "$u2" --password2 "$p2"
done ; } < file.txt
Обратите внимание, что есть вероятность, что ваш почтовый сервер не поддерживается Imapsync. Это лучше всего проверить лично, не полагаясь только на официальный список совместимых почтовых серверов.
Также отмечу, что все глобальные действия, такие как перенос важной почты, надо делать имея резервную копию и проверив сначала на тестовом почтовом аккаунте.
Я использовал эту программу для переноса 15 почтовых ящиков общим объемом 4 Гб. Метод себя оправдал, но занял приличное время. Я бы не стал использовать данную программу для переноса больших объемов почты, например, почтовых ящиков по 3+ Гб. Если у вас именно такие крупные почтовые ящики, и их много, вам нужно что-то другое, более быстрое, но, возможно, более платное!
Восстановление прошивки Asus WL-500gP
Обновлено: 13.01.2025Предыстория
Есть у меня роутер Asus WL-500gP (не V2!), купленный в 2008 году и прошитый тогда же на DD-WRT. Все это время он работал как первичный маршрутизатор в паре с повторителем Asus WL-320gE. Но вот пришлось менять провайдера, я был в отпуске, поэтому когда инженер из Билайна сказал заказчику, что DD-WRT с Билайном не работает, было принято решение сбросить прошивку на родную, от Asus. У инженера это не вышло, странным образом также сменился пароль от роутера, так что к моему срочному выходу из отпуска я получил: Asus WL-500gP с DD-WRT, неудачно прошитый прошивкой от Asus WL-500gP V2, в результате чего приветствие на странице 192.168.1.1 гласило что мой роутер V2!!!!, неизвестный пароль и почему-то в добавок невозможность этот пароль сбросить на дефолтные "root/admin" для DD-WRT всеми известными мне методами. Короче, ужас и далеко не тихий!
День ковыряний с прошивками, методами 30/30/30, tftp и пр. ничего не дали. Все что я получил - непонятно что с прошивкой, которая сразу спрашивала пароль (дефолтные не подходили, ни от Asus, ни от DD-WRT, ни старый пароль, который был до инженера). Да и до кучи, после нервных метаний я уже не был уверен, что роутер вообще заработает.
Переписка с сервисом Asus ничего не дала, кроме ссылки на инструкцию по сбросу DD-WRT. Но инженер из сервиса не сдавался и пытался мне помочь, даже когда я сказал, что скорее всего делу кирдык и предложил ему не мучить себя попытками по электронной почте решить мою проблему. Сервису Asus в лице Виктора Култюгина ставлю 5 из 5, несмотря на то, что проблему я решил иначе...
После этого я позвонил в сервис-центр на Невском, 168 (название не помню) в Санкт-Петербурге с просьбой сделать "волшебство". Там мне ответили, что если стандартные методы сброса пароля у меня не прошли, то они бессильны... Бог им судья, я окончательно расстроился и решил идти до конца.
short PIN 9
Я держу в руках некогда культовый, а сейчас неработающий роутер Asus WL-500gP. Я стал искать по ключевым словам типа "hard reset asus wl-500gP", "full reset Asus WL-500gP" и т.п. К стыду Яндекса, он мне не помог. Но помог Google. Я нашел страницу с описанием, какие контакты на микросхеме надо замкнуть на массу, чтобы оживить роутер. Ключевые слова для поиска "short PIN 9 asus wl-500gP".
Прокомментирую это руководство применительно к моему случаю:
WL500g Premium:
* open the case (screws are under the rubbers) (guarantee lost)
* remove the cover inside with a little screwdriver
* short PIN 9 or the marked solder point to ground (e.g. to the outside of the power connector) with a cable and a needle.
* turn the WL500gP on for approx 15 seconds.
* turn the WL500gP off
* remove the short circuit bridge
* turn the WL500gP on by holding the reset button
* now, you can flash again via the ASUS-Recovery-Tool
Я так и не нашел, что эе это за таинственный SHORT CIRCUIT BRIDGE. Поисковики предлагали варианты с диодными мостами и пр. Ничего такого на плате Asus WL-500gP я не нашел!
Поэтому я сделал так:
- Отключил питание роутера
- Открыл его внутренности как показано на фото выше
- По очереди замкнул 9 контакт и еще один (в кружочке на рисунке) на массу (минус на маме для блока питания).
- Включил на 15 сек
- Выключил
- Включил... Подумал... и применил метод 30/30/30...
- После этого скачал прошивку с сайта Asus (WL500gp_1.9.7.7_TW.trx) и по инструкции отсюда залил ее на роутер (утилита Asus Firmware Restoration оказалась бессильна):
tftp -i 192.168.1.1 put c:tempWL500gp_1.9.7.7_TW.trx
- Подождал для верности 10 минут, выключил, включил и о чудо! Все заработало!
... Вот сижу и думаю, зачем мне такая старая прошивка от Asus, когда есть DD-WRT :)
PS: Для тех, кто читает между строк, просмотрите следующие руководства и форумы:
- pin 9
- почитайте предупреждения в секции "Asus WL500G Premium"
- tftp: wl500g.info
- метод 30/30/30 (Hard reset)
- http://dd-wrt.com
Удачи и не бойтесь экспериментов! Правда, и неудач тоже не бойтесь :)
PS: линейка "легендарных" Asus-ов уходит, любителям хардкора и запредельных мощностей пора переходить на Mikrotik.
Настройка Dovecot - размышления по ходу отладки
Обновлено: 13.01.2025Сюда я буду помещать замечания о проблемах и особенностях, которые мне встретились, во время установки и эксплуатации почтового сервера в классической связке "Dovecot + MySQL + Postfix". Этот набор я ставил уже не раз, поэтому описанные ниже особенности не затрагивают "косяков" отдельно взятого компьютера. Начало летописи идет с сентября 2011 года.
Обращаю отдельное внимание на то, что синтаксис Dovecot 2.* отличается от синтаксиса Dovecot 1.*. Большинство руководств по настройке написаны давно либо являют собой реинкарнацию старых или чужих мануалов. Поэтому сначала постарайтесь понять, для какой версии Dovecot вы читаете руководство по установке.
Цель: создать простой и легко переносимый почтовый сервер POP/IMAP/SMTP безо всяких наворотов типа антиспама, антивируса и пр. Поэтому никаких пакетов, кроме Postfix, MySQL и Dovecot я не использую.
Перенос такого почтового сервера будет включать в себя копирование конфига Dovecot (2 файла), Postfix (4-6 файлов), MySQL (папка базы данных), папки почты пользователей.
-
Сразу приведу несколько внешних ресурсов, которые мне пригодились:
http://blog.scaytrase.ru/linux/301/
http://wiki2.dovecot.org/AuthDatabase/SQL
http://wiki2.dovecot.org/MailLocation
http://maint.unona.ru/doc/dovecot2.shtml
http://workaround.org/ispmail/lenny
http://redhat-club.org/
-
Dovecot - это фактически способ хранить почту на сервере и предоставить доступ к этой почте авторизованным пользователям. Чтобы Dovecot получил эту почту, ее надо ему передать. Для этого есть МТА, в моем случае Postfix. Проще говоря, сам по себе Dovecot - один в поле не воин.
-
Я не могу пошагово выполнять действия из чужих руководств - мне неинтересно и непознавательно. И то, и другое одинаково весомо. Поэтому при начальной установке я не использовал за основу каких-либо пошаговых руководств по настройке Dovecot. Внешние ресурсы понадобились чуть позже и их роль была примерно такая: есть идея в голове или вопрос - ищу похожие примеры. В моем подходе есть минус - если вы не разбираетесь (или не хотите копаться) в логах, проблемах и пр. - вы гарантированно получите кучу проблем! Придется подгонять то, что у вас есть, к тому, что вы найдете потом. Также можно получить полную кашу в голове от того. что у вас ничего не работает, а копипастить настройки из пошаговых руководств уже поздно! Но есть и плюс - когда вы прочувствуете основные настройки, поймете, как они связаны (порой, скорее ментально ;)) друг с другом, вы получите именно то, что нужно вам, а не было нужно кому-то, кто в свою очередь списал что-то у других.
-
Dovecot версии 2.0.beta6 я устанавливаю на CentOS 6 x86 на VDS-хостинге. Dovecot будет брать информацию о виртуальных пользователях из базы данных MySQL, установленной заранее и связанной с Postfix. Т.е. сейчас буду ставить финальный штрих - Dovecot, привязывать его к уже существующей базу данных MySQL и Postfix.
-
Для хранения и отправки почты используется специально созданный пользователь vmail (gid 500, uid 500). От имени этого пользователя Dovecot будет сохранять почту в почтовые ящики, а Postfix будет отправлять почту.
-
Устанавливаю Dovecot через менеджер пакетов yum. Не экспериментируйте с make, configure и прочими оптимизациями. Воспроизвести такую установку и отладку, а также обновить будет на порядок сложнее, если вы, конечно, не очень профессиональный администратор Linux.
yum install dovecot
yum install dovecot-mysql
-
На уже настроенной конфигурации я целый день не мог понять, почему отправленные письма (причем авторизация прошла успешно) не приходят в почтовый ящик. Оказалось, все дело в том, что в правах доступа на лог-файл /var/log/dovecot.log стоял root, а надо было vmail.
Postfix при отправке ДОЛЖЕН иметь возможность ЗАПИСИ в этот лог-файл. Postfix осуществляет авторизацию средствами Dovecot от имени непривилегированной учетной записи vmail. Я думал, что можно потом разобраться, все-таки лог - это просто лог. А вот и нет! Как только я поменял права доступа на лог-файл, я получил сразу все письма, отправленные за вчерашний день!
-
Для исключения лишних проблем при отладке, все пароли передаются открытым текстом, в базе данных хранятся также в открытом виде. Это, вообще говоря, не порядок.
-
Актуально для тех, у кого будет несколько виртуальных доменов на одном сервере, т.к. в этом случае у вас логин будет равняться "email@domain".
Во время обработки полученных логина и пароля, Dovecot может отбросить доменную часть логина и дальнейшая аутентификация не пройдет. Вопрос (как и решение) по этому поводу я разместил на форуме opennet. Проблема описана на странице http://wiki2.dovecot.org/AuthDatabase/SQL в абзаце:
By default MySQL does case-insensitive string comparisons, so you may have a problem if your users are logging with different as "user", "User" and "uSer". To fix this, you can make the SQL database return a "user" field, which makes Dovecot modify the username to the returned value. Note that if you're using separate user and domain fields, a common problem is that you're returning only the "user" field from the database. This drops out the domain from the username. So make sure you're returning a concatenated "user@domain" string or username/domain fields separately. See the examples below.
Решение этого: в файле /etc/dovecot/dovecot-mysql.conf изменить (если это необходимо) запрос пароля:
#Исходный запрос закомментирован
#password_query = SELECT username AS user,userpassword AS password FROM virtual_users WHERE username = '%n' AND userrealm = '%d' AND active='1'
password_query = SELECT username AS user,userrealm AS domain,userpassword AS password FROM virtual_users WHERE username = '%n' AND userrealm = '%d' AND active='1'
user_query = SELECT CONCAT(username,'@',userrealm) AS user, '500' AS uid, '500' AS gid FROM virtual_users WHERE username = '%n' AND userrealm = '%d' AND active='1'
-
Отдельно хочу сказать о проблеме, которая чуть не свела меня с ума. Привожу часть конфига /etc/dovecot/dovecot.conf
service auth {
unix_listener /var/spool/postfix/dovecot-auth {
user = postfix
group = postfix
mode = 0660
}
unix_listener auth-master {
user = vmail
group = vmail
mode = 0660
}
unix_listener auth-userdb {
user = vmail
group = vmail
mode = 0660
}
#user=root
}Обратите внимание на выделенную жирным закомментированный параметр
user=root
. Во время отладки авторизации Postfix через Dovecot, мне пришлось раскомментировать этот параметр, т.к. иначе постоянно были проблемы доступа к сокету. Потом я закомментировал его. Все должно работать без него. Чем меньше root, тем правильнее вы все настроили. -
Добавлено 04.04.2012. Специально не стал удалять предыдущий пункт (№10) - себе в назидание. Вся проблема с доступами к сокету, оказывается, просто в том, что по-умолчанию Dovecot предлагает сделать не так, как решил делать я. Вот как это предлагается в Dovecot по-умолчанию:
service auth {
И вот что должно соответствовать этому в файле /etc/postfix/main.cf:
unix_listener /var/spool/postfix/private/auth {
user = postfix
group = postfix
mode = 0660
}
...
smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
Я всегда считал (почему - вопрос интересный), чтоprivate/auth
это не часть пути, а типа условных слов "частный доступ/с авторизацией"!!! Нет, это просто фантастика! Сейчас полез все-таки прочитать про эту ерунду в/usr/share/doc/Postfix-2.6.6/README_FILES/SASL_README
. Со строки 181 я стал медленно сползать под стол:private/auth
- это относительный путь. Относительно пути до директории очереди Postfix, т.е./var/spool/postfix
. Господа, это только лишний раз доказывает, что где-то увиденное - не обязательно истина в последней инстанции. И мой сайт bozza.ru также может содержать опечатки и ошибки. Очень жаль, что никто не обратил на это внимание раньше. Но главное, что это стало ясно хотя бы сейчас, спустя месяцы и совершенно случайно... Я подкорректировал этот пункт в настройке Postfix. -
Добавлено 09.04.2012. Два дня пытался решить проблему, из-за которой не создавались папки почты. Я грешным делом подумал, что проблема в том, что
vmail:vmail
не имеет прав записи в папку/var
. Перенес папку почты из/var/vmail
в/vmail
- результата нет. Вот что было в лог-файле:
*************************************
imap-login: Info: Login: user=<test@virtual.local>, method=PLAIN, rip=192.168.2.113, lip=192.168.2.105, mpid=3284
imap: Debug: Loading modules from directory: /usr/lib/dovecot
imap: Debug: Module loaded: /usr/lib/dovecot/lib20_autocreate_plugin.so
imap: Debug: Added userdb setting: mail=maildir:/vmail/virtual.local/test
imap(test@virtual.local): Debug: Effective uid=5000, gid=5000, home=/vmail/virtual.local/test
imap(test@virtual.local): Debug: Home dir not found: /vmail/virtual.local/test
imap(test@virtual.local): Debug: maildir++: root=/vmail/virtual.local/test, index=, control=, inbox=/vmail/virtual.local/test
imap(test@virtual.local): Debug: Namespace : Permission lookup failed from /vmail/virtual.local/test
imap(test@virtual.local): Debug: Namespace : Using permissions from /vmail/virtual.local/test: mode=0700 gid=-1
imap(test@virtual.local): Error: user test@virtual.local: Initialization failed: Initializing mail storage from mail_location setting failed: mkdir(/vmail/virtua
l.local/test) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +w perm: /vmail, euid is not dir owner)
Apr 05 20:59:55 imap(test@virtual.local): Error: Invalid user settings. Refer to server log for more information.
*************************************Самое главное:
Permission denied (euid=5000(vmail) egid=5000(vmail) missing +w perm: /vmail, euid is not dir owner)
Я даже права 777 давал на папку
/vmail
- нет результата.
На форуме opennet.ru мне подсказали, что проблема может быть в том, что в CentOS 6 папки может не давать создавать SELinux. Отключил SELinux - все работает! -
Добавлено 28.04.2012. Вообще, может и не супер, но хранение паролей в открытом виде в базе данных дает максимальную степень простоты настройки и, самое главное, взаимодействия компонентов, таких как Dovecot, MySQL, Postfix, PostfixAdmin, Roundcube, возможно, и других тоже. Я не специализируюсь на почтовых серверах, поэтому вполне допускаю, что есть достаточно сработанные и удобные схемы шифрования паролей, типа CRAM-MD5 и пр. Если у вас, дорогие читатели, есть свой опыт - я только рад, если вы рискнете высказывать его вслух.
Настройка Dovecot
Обновлено: 30.08.2021Dovecot выполняет роль POP/IMAP почтового сервера. Фактически, он выполняет две функции:
- (основная) получает почту от MTA (Sendmail, Postfix и др.) и хранит ее на диске;
- (в моем случае) осуществляет авторизацию логина/пароля почтовых пользователей.
В данном руководстве пойдет речь о настройке Dovecot версии 2 как части классической связки "Dovecot + Postfix + MySQL + PostfixAdmin".
Последние комментарии
Популярно:
Разделы статей:
Подскажите. подключение с ПК все работает все ок. Делал по вашей мурзилке.
Но при подключе...