Sendmail c точки зрения ISPmanager

Материал из ISPWiki

Перейти к: навигация, поиск

Содержание

Общее о sendmail

Директория sendmail:

/etc/mail

Основные файлы:

<hostname>.mc (или sendmail.mc на Linux) - основной файл конфигурации, именно в него вносятся необходимые изменения, и на его основе автоматически будет собираться рабочий файл sendmail.cf.

aliases- список псевдонимов пользователей. Говоря упрощённо, псевдоним позволяет вам наиболее простым способом перенаправлять почту, приходящую на тот или иной почтовый ящик, на конкретного пользователя.

virtusertable - здесь размещаются записи, определяющие виртуальных пользователей. Т е в файле описано соответствие почтового ящика виртулаьному пользователю.

Логи:

/var/log/maillog


Создание почтовых доменов через ISPmanager

Информация о почтовом домене прописывается в файл /etc/mail/virtusertable

В зависимости от значения поля "Действие по умолчанию" (что делать с сообщениями, которые пришли на несуществующие почтовые ящики в данном домене):

@company.me error:nouser No such user here - сообщение об ошибке 
@company.me devnull - игнорировать и удалить 
@company.me me@gmail.com - перенаправить на адрес me@gmail.com 
@company.me %1@me.ispvds.com - перенаправить на домен me.ispvds.com 

Имя домена записывается в файл local-host-names. Это определяет, что ящик является локальным и при отправке почты на него письмо будет отправляться локально, не зависимо куда ведут mx записи домена.


Создание почтовых ящиков через ISPmanager

При создании ящика в системе создает виртуальный пользователь (virtuser_id).

В файл virtusertable прописывается соответствие ящика и виртуального пользователя.

sales@company.me virtuser_1005 

В вышеуказанном примере ящику sales@company.me соответствует виртуальный пользователь virtuser_1005

Sendmail хранит пароли к ящикам в базе sasldb

Пароль устанавливается с помощью следующей команды (соответственно вызвав эту команду можно сменить пароль для ящика из консоли):

/usr/local/sbin/saslpasswd2 -p -a Sendmail -c -u company.me sales 

В конфигурационном файле ISPmanager прописывается команда для получения паролей ящиков. В моем случае она имеет вид (путь до sasldb и команда db4_dump могут отличаться в зависимости от ОС):

path db4 db4_dump185 -p /usr/local/etc/sasldb2.db 

Почтовый псевдоним прописывается в файл virtusertable

staff@company.me sales@company.me - staff@company.me является псевдонимом для sales@company.me 

Почтовые редиректы прописываются в файл aliases. К примеру если в интерфейсе ISPmanager в поле "Слать копии писем на e-mail" указать gmail@mail.com, то в aliases получим следующую запись:

virtuser_1005: \virtuser_1005,gmail@mail.com


Автоответчик

В <директория домена>/mail/ создается .vacation.db и .vacation.msg

В aliases прописывается соответствие virtuser'a и автоответчика.

virtuser_1004:  \virtuser_1004,"|vacation -U -f /home/eff/data/email/mary.com/mail/.vacation.db -m /home/eff/data/email/mary.com/mail/.vacation.msg -R mail@mary.com  mail"

Как учитывается квота почтового ящика

Sendmail использует систему виртуальных пользователей. На домашнюю директорию ящика выставляется владелец - virtuser, который соответствует ящику. В моем примере ящику sales@company.me соответствует virtuser_1005, соответственно домашняя директория ящика и все лежащей в ней файлы/директории имеют владельца - virtuser_1005

drwxr-x--x 3 virtuser_1005 fly 512 Dec 3 06:13 /home/fly/data/email/company.me/sales/ 

Квота ящика выставляется на пользователя virtuser_1005, и так как virtuser_1005 - системный пользователь, ОС не позволит в ящик положить письмо, если пользователь превысил квоту.


Как перенести почтовый домен от одного пользователя к другому

Переносим почтовый домен company.ru (ящик mary@company.ru) от пользователя mary к пользователю cat

Sendmail работает с так называемыми виртуальными пользователями (virtuser), смотрим какому virtuser'у принадлежит почтовый ящик. Информацию можно получить из файла /etc/mail/virtusertable

mary@company.ru  virtuser_503

В файле /etc/passwd нужно изменить домашнюю директорию virtuser_503 с /var/www/mary/data/email/company.ru/mary на /var/www/cat/data/email/company.ru/mary

virtuser_503:x:503:502::/var/www/cat/data/email/company.ru/mary:/usr/sbin/nologin

В файле конфигурации dovecot (/etc/dovecot/dovecot.passwd) меняем директорию ящика.

Переносим саму директорию к новому пользователю

mv /var/www/mary/data/email/company.ru/mary/ /var/www/cat/data/email/company.ru/mary/

Так как владелец домашней директории почтового ящика - virtuser_503, то меняем только группу. Ставим группу нового пользователя

chgrp -R cat /var/www/cat/data/email/company.ru/mary

В файле конфигурации ISPmanager (/usr/local/ispmgr/etc/ispmgr.conf) в строке Domain company.ru 500 указываем UID нового пользователя.

Перезапускаем ISPmanager

killall ispmgr

Перезапускаем dovecot

/etc/init.d/dovecot restart


FAQ

Q: После отключения и последующего включения почтовый ящик перестает работать.

A: Часто такая проблема возникает когда в файле конфигурации ISPmanager указана не верная команда для дампа пароля из базы sasldb.

Q: Почта на ящик отправляется локально, вместо того, чтобы отправляться в соответствии с mx записями домена.

A: Sendmail считает домен локальным, если:

1. Домен совпадает с hostname сервера.

2. На сервере создан такой почтовый домен (домен есть в файлах local-host-names и virtusertable).

3. Домен совпадает с обратным адресом ip-шника, с которого посылается письмо.

Q: Какой формат хранения электронной почты maildir или mbox использует sendmail?

A: Sendmail не умеет работать с maildir. С maildir sendmail работает через LDA. Смотрим в конфиге sendmail какой LDA используется (Если LDA не используется, значит почта кладется в mbox файл). Например, в моем случае это procmail: MAILER(procmail)dnl

Смотрим файл конфигурации procmail - /usr/local/etc/procmailrc (или /etc/procmailrc на Linux), в нем указано какой формат используется.

Была ли эта информация полезной? Да | Нет
Личные инструменты