28 мая 2013

Настройка почтовой системы(postfix+fetchmail+dovecot) как клиента(yandex..etc)


Настройка сервера - в спойлере, чтобы уже прочитавшим не листать мануал впустую.
Несколько месяцев в свободное время изучал горы документации и how-to для построения внутреннего почтового сервера(ВПС), который мог функционировать в качестве почтового клиента(П-К) - The Bat или Thunderbird с бесплатными почтовыми сервисами, вроде gmail/rambler/yandex.


Что это означает на деле:

1. Возможность соединиться с имеющимися аккаунтами на почтовых сервисах как клиент, проверяя/забирая оттуда новую почту.
2. Возможность отправлять почту пользователями(из ЛВС) на ВПС, который бы пересылал её через имеющиеся аккаунты на этих почтовых серверах gmail/rambler/yandex.
3. Возможность всем пользователям видеть всю исходящую/входящую почту в программах-клиентах(Thunderbird). Т.е. имеется общая почтовая база, доступная для просмотра пользователям в ЛВС.
4. Пользователи заводятся на ВПС, как настоящие, т.е. через команду "useradd"

Какими средствами реализовал:
п.1 - fetchmail(проверяет/забирает почту), procmail(раскладывает её по ящиками на ВПС)
п.2 - postfix
п.3 - dovecot-imapd
п.4 - как и писал выше - команда "useradd" 

Зачем всё это делал:
Мне потребовалось поставить Внутренний Почтовый Сервер для пересылки/приёма писем через публичные, бесплатные почтовые системы(rambler/mail/yandex/gmail) и чтобы он крутился сам по себе, не требуя совсем внимания. На текущий момент после установки и настройки ВПС прошло два месяца - почта приходит/уходит исправно. Т.е. каких-либо проблем не было.

Устанавливал и настраивал эту связку на Ubuntu Server 10.10, который подсоединён к роутеру(dlink, железка, через NAT), имеющий выход в интернет.
Команды, начинающиеся с "#" означают запуск с правами "root"
Команды, начинающиеся с "$" означают запуск с правами обычного пользователя.
Комментарии обозначаются как - "###"
Пример установки приведён для одного почтового ящика. С помощью данной ниже последовательности можно добавлять ещё ящики.

Первым делом после установки свежей системы, настроим сеть:

#nano -w /etc/network/interfaces
auto eth0
iface eth0 inet static
        address 192.168.0.1 # адрес текущего сервера
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.254 # адрес моего роутера
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 78.122.0.254 # днс-сервер провайдера
        dns-search srv # искать днс-записи в домене srv

Перезапустим сеть:

service networking restart

Далее, обновим сервер и поставим всё необходимое ПО для обеспечения работы ВПС:

#aptitude update && aptitude upgrade && aptitude install postfix dovecot-imapd fetchmail procmail
Примечание: При установке postfix Вам зададут различные вопросы. Я выбирал в начале тип сервера - smarthost. Остальное - не особо важно, т.к. все эти настройки мы будем править позднее.

И перезагрузим его:

#restart

После перезагрузки заведём локальных пользователей на сервере, которые будут использоваться для доступа к почте програмам-клиентам:

Пояснение:
В левой колонке - заведённые пользователи, а справа - соответствующие им реальные адреса:

company     company-mail@yandex.ru

Добавим пользователя и назначим ему пароль. Эти данные будут использоваться в П-К для доступа к заведённому ящику company@localhost:

#useradd company
#passwd company

Создадим необходимые для работы директории:

#mkdir -p /var/log/dovecot

### Здесь у нас будет храниться почтовая база, доступная для юзеров из ЛВС.
#mkdir -p /var/mail/company

### Создаём домашнюю директорию
#mkdir -p /home/company

### Содаём файлы, для хранения логов dovecot-imapd
#touch /var/log/dovecot/dovecot.log
#touch /var/log/dovecot/dovecot.info

### Делаем созданного пользователя company владельцем созданной директории.
#chown company: -Rv /home/company

### Делаем владельцем root директории /etc/postfix:
#chown root: -Rv /etc/postfix

Далее, разбираемся с файлами конфигурации установленных программ.

Сначала создадим файл, в котором будут хранится Ваши smtp-сервера и логины/пароли для отправки почты через почтовый сервис yandex:

#nano -w /etc/postfix/sasl_passwd

### Формат записей такой(без скобок):
###[smtp-сервер к примеру, yandex]:[порт, к примеру - 25] [логин@yandex.ru]:[пароль к Вашей учётке на яндексе]

smtp.yandex.ru:25 company-mail@yandex.ru:mypassword

Затем, создадим файл, в котором указывается, какой адрес email и через что(smtp-сервер) будет передаваться почтовому серверу yandex

#nano -w /etc/postfix/sender_relay

### Формат записей такой(без скобок):
###[логин@yandex.ru] [smtp-сервер к примеру, yandex]:[порт]

company-mail@yandex.ru smtp.yandex.ru:25

Создадим файл, в котором наши локальные учётки будут перезаписываться правильными адресами бесплатных почтовых сервисов:

#nano -w /etc/postfix/generic

### Формат записей такой(без скобок):
###[логин_созданного_юзера@localhost] [логин_на_яндексе@yandex.ru]

company@localhost     company-mail@yandex.ru

Далее переведём созданные файлы в формат, понятный postfix, т.к. напрямую с созданными файлами он не работает:

#postmap /etc/postfix/sasl_passwd
#postmap /etc/postfix/sender_relay
#postmap /etc/postfix/generic

Присвоим права "root" созданным файлам, т.к. никто кроме root не должен читать эти файлы. Как никак - там хранятся пароли юзеров.

#chmod 600 /etc/postfix/generic
#chmod 600 /etc/postfix/sasl_password
#chmod 600 /etc/postfix/sender_relay
#chmod 600 /etc/postfix/sasl_password.db
#chmod 600 /etc/postfix/sender_relay.db

Создадим символическую ссылку для того, чтобы вся почта хранилась в /var/mail/company:

#ln -s /var/mail/company /home/company/Maildir

Далее, правим конфиги postfix:
#nano -w /etc/postfix/main.cf:

smtpd_banner = Sender (MTA)
biff = no
append_dot_mydomain = no
readme_directory = no

###smtp_tls_CApath = /etc/ssl/certs
smtp_tls_CApath = /usr/share/ca-certificates/mozilla
smtp_tls_CAfile =  /etc/postfix/cacert.pem
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

myhostname = ws1.srv
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = ws1.srv, localhost.ws1.srv, localhost
mynetworks = 127.0.0.0/8, 192.168.0.0/24

message_size_limit = 0
virtual_mailbox_limit = 0
mailbox_size_limit = 0

mailbox_command = procmail -a "$EXTENSION" DEFAULT=$HOME/Maildir/
MAILDIR=$HOME/Maildir

recipient_delimiter = +
inet_interfaces = all

smtp_use_tls=yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_sender_dependent_authentification = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
smtp_generic_maps = hash:/etc/postfix/generic
smtpd_enforce_tls = no
smtp_tls_security_level=may
###smtp_tls_security_level=verify

С postfix - настройка закончена. Перейдём к dovecot-imapd, отвечающий за доступ к почтовым ящикам на ВПС.
Можете скопировать эти строки и вставить в чистый файл /etc/dovecot/dovecot.conf:
protocols = imap
disable_plaintext_auth = no
log_path = /var/log/dovecot/dovecot.log
info_log_path = /var/log/dovecot/dovecot.info
log_timestamp = "%Y-%m-%d %H:%M:%S "
login_trusted_networks = 192.168.0.0/24
mail_location = maildir:~/Maildir
mail_privileged_group = mail
protocol imap {
}
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}
protocol managesieve {
}
auth default {
  mechanisms = plain
  passdb pam {
  }
  userdb passwd {
  }
  user = root
  !include_try /etc/dovecot/auth.d/*.auth
}
dict {
}
plugin {
}
!include_try /etc/dovecot/conf.d/*.conf

Последним остался fetchmail, ответственный за получение почты. Procmail настраивать не надо, он уже настроен.
По-умолчанию fetchmail будет работать как демон, проверяя почту каждые две минуты:
#nano -w /etc/fetchmailrc:
set daemon 120
set no syslog
set logfile /var/log/fetchmail.log
set postmaster pp
set no bouncemail

poll pop.yandex.ru proto pop3
    user "company-mail" with password yandexpassword is company here;

Остается включить fetchmail в качестве демона:
#nano -w /etc/default/fetchmail:

START_DAEMON=yes


Всё, с настройкой почтового сервера закончено. Осталось настроить П-К для работы через ВПС. Приведу пример с Thunderbird:

После создания учёток необходимо зайти в опции созданной учётки Thunderbird и отключить синхронизацию сообщений с компьютером пользователя, иначе все письма заведённой учётки на этой машине перекачается на жёсткий диск.

При создании учётки указываем:
имя: company
сервер: company@192.168.0.1
пароль: [указываете пароль учётки company, который Вы заводили через команду "passwd company"]. Жмите "Ок" и Thunderbird обнаружит работающие smtp/imap-сервера вашего ВПС. Порты будут - 25 и 143. Учётка создана и теперь в её свойствах осталось выставить только правильное имя в поле "От кого отправляете" и "Обратный адрес" - company-mail@yandex.ru. Иначе отправка Ваших писем не произойдёт.

Вроде бы всё. Писал в большей степени по памяти, так что если возникнут вопросы - пишите, разберёмся.

Наболело:
 (Нажмите, чтобы показать/скрыть)
Когда я спрашивал практичного совета - давали пространтственные рекомендации - гугли, ман, ищи, плати нам - мы тебе сделаем и так далее...Не стоит строить из себя профи, если не можете дать рабочего ответа. 
Чего зажимать-то решения, которые Вы знаете? Вам тяжело написать его? Жалко времени? А не жалко времени сидеть и писать пустые, в общем, комментарии - которые не решают проблему? Просите денег за решение проблемы - идите в разделы JOB или на сайты фрилансеров. Точка.

--

Спасибо тем участникам ресурса forum.ubuntu.ru, которые давали рабочие и практичные советы!
Проблемы возникшие по ходу использования этой почтовой связки и их решения:
Невозможность принять/отправить письма больше 10 Мбайт.
 (Нажмите, чтобы показать/скрыть)
Столкнулся с проблемой невозможности принять письмо большого объёма:
fetchmail скачивает его себе на компьютер, но так как размер большой, то в лог пишется, что его не может принять и через две минуты(настройки интервала проверки новой почты на внешних почтовиках) снова его тянет. Итого за ночь убежало более 6Gb трафика и лишило меня части ЗП 
Даю ссылку на тему, как решить эту проблему.

Ошибка "relay access denied" - при отправке почты с почтового клиента(Thunderbird, TheBat и другие).
 (Нажмите, чтобы показать/скрыть)
Решение - тут

Если у Вас не уходит почта через gmail/rambler/mail/yandex из-за отсутствия сертификатов этих почтовых сервисов.
 (Нажмите, чтобы показать/скрыть)
Возьмём, к примеру, почту gmail. Как достать их сертификат?
$openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:25
выведется много всего интересного, но главное добавить содержимое между -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----(включительно) к себе в /etc/postfix/cacert.pem и после этого почта уходила в мир без проблем. Более подробное описание проблемы.

2 комментария:

  1. Спасибо,тебе добрый человек,но вот что-то не выходит с imap' ом...

    Задача 'Поиск новой почты в подписанных папках в 192.168.59.130.' сообщила об ошибке (0x8004DF0B) : 'Outlook не удалось загрузить папку (null) с почтового сервера IMAP для пользователя 192.168.59.130. Ошибка: Подключение к серверу недоступно. Для выполнения этой операции Outlook должен быть подключен к серверу. Если это сообщение появится повторно, обратитесь к администратору сервера или поставщику услуг Интернета.'

    192......адрес локального сервера

    ОтветитьУдалить
  2. Ежедневник Админа: Настройка Почтовой Системы(Postfix+Fetchmail+Dovecot) Как Клиента(Yandex..Etc) >>>>> Download Now

    >>>>> Download Full

    Ежедневник Админа: Настройка Почтовой Системы(Postfix+Fetchmail+Dovecot) Как Клиента(Yandex..Etc) >>>>> Download LINK

    >>>>> Download Now

    Ежедневник Админа: Настройка Почтовой Системы(Postfix+Fetchmail+Dovecot) Как Клиента(Yandex..Etc) >>>>> Download Full

    >>>>> Download LINK 3R

    ОтветитьУдалить