Postfix с нуля на SUSE 10.1

Общие вопросы по установке и настройке сервера Postfix.
Писать в этот форум могут только зарегистрированные пользователи.

Модераторы: prefer, alexandrnew, ALex_hha, Roman, Axel

Ответить
hunter219
Новичок
Новичок
Сообщения: 4
Зарегистрирован: 11 авг 2006, 14:16
Откуда: Kiev

Postfix с нуля на SUSE 10.1

Сообщение hunter219 » 21 сен 2006, 09:54

Здравствуйте, уважаемые специалисты! Уже неделю немогу настроить меил-сервер, ПОМОГИТЕ ПОЖАЛУЙСТА! Поставил SUSE 10.1, нужно настрить маил сервер. Есть комп сеть 192.168.0.0 и несколько рабочих групп. Инет по ADSL. НУжно чтобы пользователи могли забирать почьту с клиентских машин c OutloockExpress или подобного, пройдя авторизацию на сервере. AD нет. Локальная почьта должна ходить локально по сетке между пользователями зарегеными на сервере. Есть зарегестрированый домен на котором буду ящики. Сервер питаюсь настроитиь на Postfix + Fetchmail.

GalkaVV
С Postfix знаком...
С Postfix знаком...
Сообщения: 57
Зарегистрирован: 08 авг 2006, 03:49

Сообщение GalkaVV » 21 сен 2006, 16:59

А в чем проблема-то? Что не встает? Хау-тушек и манов по сети вроде достаточно. Или посоветовать какой-либо способ авторизации?

hunter219
Новичок
Новичок
Сообщения: 4
Зарегистрирован: 11 авг 2006, 14:16
Откуда: Kiev

Сообщение hunter219 » 22 сен 2006, 14:36

Да вот по авторизации не получяется....где и как прописывать пользователей и ящики для них!

DND
Внёс свой вклад...
Внёс свой вклад...
Сообщения: 24
Зарегистрирован: 24 авг 2006, 15:49

Сообщение DND » 22 сен 2006, 16:21

Пользователей либо в /etc/passwd через useradd
либо в mysql как описано тут:
http://www.opennet.ru/base/net/postfix_mysql.txt.html

hunter219
Новичок
Новичок
Сообщения: 4
Зарегистрирован: 11 авг 2006, 14:16
Откуда: Kiev

Сообщение hunter219 » 22 сен 2006, 17:24

Ну добавил я пользователей через /etc/passwd как мне указать куда кому какую почьту слать, и как они ее будут забирать с сервера...я так понимаю єто в fetchmail писать, но я делал так и что то не идет!

GalkaVV
С Postfix знаком...
С Postfix знаком...
Сообщения: 57
Зарегистрирован: 08 авг 2006, 03:49

Сообщение GalkaVV » 25 сен 2006, 14:35

При чем тут fetchmail?

Код: Выделить всё

Fetchmail is a full-featured IMAP/POP2/POP3/APOP/KPOP/ETRN/ODMR client ...
Как сказано из описания, fetchmail это КЛИЕНТ pop/imap и все такое. Он не сервер. В качестве сервера используются например cyrus-imap, courier-imap, мой любимый dovecot...

Может, по-порядку?

Надо определиться со следующим:
1) Какая функциональность требуется от почтового сервера?
1.a) Почта будет доступна только локальным пользователям? Сетевым внутри сети? Cетевым в любом месте сети (интернет-почта)? (От количества пользователей будет сильно зависеть система хранения оных)
1.b) Какие нужны протоколы передачи почты? smtp, smtp+tls, smtp+ssl ?
1.c) Как будут организованны пользователи почты? Реально существующие, виртуальные? Если виртуальные, то выбрать хранилище для пользователей и SASL (dovecot, sasl). Для количества пользователей > 5 уже стоит использовать виртуальных пользователей.
1.d) Как будут организованы почтовые ящики? Пользователь, у него есть несколько почтовых ящиков (даже на разных доменах). Почтовый ящик и пользователь(привязан к домену). От этого будет зависить администрирование.
1.e) Куда будет передаваться почта после ее получения на сервер? (Определиться с MDA/LDA) Рекомендую dovecot - удобно, если не нужен sieve.

Ну и все такое.

GalkaVV
С Postfix знаком...
С Postfix знаком...
Сообщения: 57
Зарегистрирован: 08 авг 2006, 03:49

Сообщение GalkaVV » 25 сен 2006, 18:00

Ладно. Попробую выдать на-гора "примитивный" mail-сервер. Достаточно корявый, и не факт, что соответствует требованиям, но отсюда уже можно плясать.
Обязательно иметь postfix >= 2.3

Итак, postfix+dovecot без ничего.

Код: Выделить всё

# Задаем постфиксу имя хоста и домен, на котором он работает
myhostname = host.domain.zone
# Что отвечать, если некому отправлять почту (450 - попробуйте позже)
unknown_local_recipient_reject_code = 450
# Задаем максимальный размер почтового ящика и сообщения 
# (почему-то у меня требует обязательно)
mailbox_size_limit = 129000000
message_size_limit = 128000000
# Отключаем проверку наличия почтового ящика (специально для спамеров)
disable_vrfy_command = yes
# Включаем аутентификацию по SASL
smtpd_sasl_auth_enable = yes
# Дефолтный домен для пользователей (желательно ЗДЕСЬ указать пустым)
smtpd_sasl_local_domain = 
# Не помню, зачем эта опция: 
smtp_destination_concurrency_limit = 1
# Принудить к вежливости:
smtpd_helo_required = yes
# Настраиваем ограничения:
smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination
# Ниже только ОДНА строка.
smtpd_sender_restrictions = reject_sender_login_mismatch,permit_sasl_authenticated,reject_unknown_sender_domain,permit
# Карта пользователей. Нужна, чтобы пользователи не могли отсылать почту от 
# ящиков, которые им не принадлежат
smtpd_sender_login_maps = hash:/usr/local/etc/postfix/sasl_maps
# Тоже не помню уже...
smtpd_delay_reject = yes
# Алиасы на почтовые ящики:
virtual_alias_maps = hash:/usr/local/etc/postfix/virtual
# Ниже только ОДНА строка
local_recipient_maps = $virtual_alias_maps,$alias_maps,hash:/usr/local/etc/postfix/mailboxes
# Для каких доменов принимается почта:
mydestination = $myhostname,localhost.$mydomain

# Если будет dovecot, то
mailbox_transport = dovecot
# Если cyrus-imap, то
# mailbox_transport = cyrus
# Это для TLS/SSL (mail.pem - подписаный сертификат сервера)
smtpd_use_tls = yes
smtpd_tls_cert_file = /usr/local/etc/mail.pem
smtpd_tls_key_file = $smtpd_tls_cert_file

# Где хранится очередь сообщений:
queue_directory = /var/spool/postfix

# Дальнейшее уже относительно системы:
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
mail_owner = postfix
debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         xxgdb $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = no
html_directory = no
Файл /usr/local/etc/postfix/mailboxes содержит в себе просто перечень всех существующих ящиков в системе в формате ящик@хост.домен.зона [табуляция] все_что_угодно. На вторую часть постфикс просто не обращает внимания. Например:

Код: Выделить всё

serega@mail.domain.ru [tab] blah-blah-blah
Файл /usr/local/etc/postfix/virtual содержит список алиасов почты в формате ящик@домен.зона [tab] ящик@хост.домен.зона,ящик@хост.домен.зонаящик@хост.домен.зона
Например:

Код: Выделить всё

serega@mail.domain.ru [tab] sergey@domain.ru,seriy@domain.ru
root@domain.ru [tab] sergey@domain.ru
Файл /usr/local/etc/postfix/sasl_maps содержит список владельцев почтовых ящиков. Это чтобы вася@mail.domain.ru не мог слать почту от имени петя@domain.ru. Файл содержит перечень всех почтовых ящиков в системе и их владельцев.
Например:

Код: Выделить всё

sergey@domain.ru [tab] serega@mail.domain.ru 
 sergey@domain.ru [tab] serega@mail.domain.ru
seriy@domain.ru [tab] serega@mail.domain.ru
После каждого изменения любого из этих файлов надо запустить:
postmap полное_имя_измененного_файла
posfix reload

Теперь надо описать транспорт dovecot, который, являясь LDA, будет получать почту от постфикса и раздавать ее клиентам через imap или pop3. Dovecot так же обеспечит механизм аутентификации для постфикса. (Строка mailbox_transport=dovecot).

Для того, чтобы постфикс передавал почту для dovecot, в файле master.cf должны присутствовать следующие строки:

Код: Выделить всё

dovecot     unix  -       n       n       -       -       pipe
    flags=DRhu user=virtual:virtual argv=/usr/local/libexec/dovecot/deliver -d ${user}
Тут есть маленькая хитрость: dovecot будет запускаться от пользователя virtual, следовательно пользователь в системе должен быть. Его надо просто создать. Желательно, вместо пароля поставить звездочку, чтобы под этим пользователем невозможно было зайти в систему.

Теперь postfix, получив почту для локальных ящиков, будет отдавать ее dovecot'у.

С постфиксом покончено. Теперь dovecot. Тут труднее. У меня нет реально рабочего конфига с подобной авторизацией, но я постараюсь минимально накосячить. ;)

/usr/local/etc/dovecot.conf:

Код: Выделить всё

# Список протоколов доставки почты ( s - secure (TLS))
protocols = imap imaps pop3 pop3s
# Это для секьюрного соединения. mail.pem тот же, что и для postfix.
ssl_cert_file = /etc/ssl/certs/mail.pem
ssl_key_file = /etc/ssl/private/mail.pem
# Если нет сертификатов и сложно их генерить, включить следующую опцию:
ssl_disable = yes
login_process_size = 64
login_process_per_connection = yes
login_greeting = Dovecot ready.
default_mail_env = mbox:/var/mail/%u
mail_extra_groups = mail
verbose_proctitle = yes
# Для авторизации по именам пользователей без домееной части можно дописать:
auth_default_realm = хост.домен.зона
first_valid_uid = 1010
last_valid_uid = 1010
first_valid_gid = 1010
max_mail_processes = 1024
protocol imap {
  imap_client_workarounds = delay-newmail outlook-idle netscape-eoh tb-extra-mailbox-sep
}
  
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol lda {
  postmaster_address = postmaster@домен.зона
  sendmail_path = /usr/local/sbin/sendmail
}
auth_default_realm = хост.домен.зона
auth default {
  mechanisms = plain login
  # Будем использовать собственный формат базы паролей:
  passdb passwd-file {
    # Путь к passdb файлу
    args = /usr/local/etc/mailpasswd
  }
  # Пользователь статичный - virtual. Тут вписываются его UID и GID:
  userdb static {
    args = uid=1010 gid=1010 home=/var/spool/deovecot/imap/virtual/%n mail=maildir:/var/spool/dovecot/imap/virtual/%n/Maildir
  }
  user = root
  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0660
      user = virtual
      group = mail
    }
    client {
      # Выделяем для постфикса сокет аутентификации. ОЧЕНЬ важно!
      path = /var/spool/postfix/private/auth-client
      mode = 0660
      user = postfix
      group = wheel
    }
  }
}
dict {
}
plugin {
}
Пример строки из /usr/local/etc/mailpasswd:

Код: Выделить всё

sergey:{plain}пароль_прямым_текстом
nikolay:{md5}пароль_в_md5
Пожалуй, все. Заполнить своими значениями все пути, имена доменов, хостов, пользователей, паролей и т.д.

З.Ы. После сборки тщательно обработать молотком и зубилом.

hunter219
Новичок
Новичок
Сообщения: 4
Зарегистрирован: 11 авг 2006, 14:16
Откуда: Kiev

Сообщение hunter219 » 02 окт 2006, 14:59

Если можно конфигурацию для postfix+fetchmail + какие нужны средства для авторизации и раздачи почьты! (procmail чтооли)!
Спасибо!

Ответить