Немногие крупные предприятия могут похвастаться тем, что были крупными изначально. Многие крупные торговые сети, интеграторы, разработчики и ISP начинали свой бизнес с небольших офисов и пары десятков сотрудников, которые усердно работали над будущим успехом своей компании. Разумеется, что в таких небольших предприятиях крайне редко встает вопрос о внедрении собственного почтового сервера или системы совместной работы, и почтовые ящики сотрудников, как правило, заводятся в публичных email-сервисах наподобие яндекс-почты или gmail. Однако когда предприятие достигает определенного этапа в своем развитии и приходит к необходимости создания собственного почтового сервера на базе Zimbra, встает вопрос о подключении старых почтовых ящиков к новым учетным записям.

image

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

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

Именно поэтому наиболее правильным было бы возложить задачу по получению почты с внешних почтовых ящиков на подконтрольный вам сервер. Однако тут возникает небольшая проблема, ведь встроенных утилит для работы с внешними почтовыми ящиками в Zimbra Collaboration Suite нет. Впрочем, это не станет большой проблемой, ведь Zimbra может прекрасно работать со сторонними программами и утилитами. Именно поэтому для получения почты с внешних адресов можно воспользоваться программой fetchmail, которая имеется в репозиториях большинства дистрибутивов Linux.

После того как менеджер пакетов завершит установку fetchmail, необходимо будет в файле /etc/default/fetchmail привести к следующему виду и при необходимости раскомментировать строки START_DAEMON=yes и set daemon 600. В первой строке мы разрешаем запуск fetchmail в качестве системной службы, а во второй задаем интервал обращения за почтой к внешнему почтовому ящику в секундах. В данном случае этот параметр составляет 600 секунд и это значит, что почтовый ящик будет автоматически проверяться каждые 10 минут. Данный интервал можно увеличить, чтобы снизить нагрузку на сервер, а можно уменьшить, если хотите, чтобы письма приходили как можно быстрее.

После этого остается лишь указать в fetchmail данные для подключения к внешним почтовым ящикам. Для примера предположим, что утилита будет подключаться к ящику manager@gmail.com, а затем пересылать почту на manager@company.ru. Для этого нам потребуется сперва создать конфигурационный файл fetchmail, а затем внести в него ряд правок. Сделать это можно при помощи команды cp /usr/share/doc/fetchmail/examples/fetchmailrc.example /etc/fetchmailrc

После этого открываем файл /etc/fetchmailrc в любом текстовом редакторе и прописываем параметры для подключения к внешним почтовым ящикам в конце файла авторизационные данные нашего внешнего ящика:

poll imap.gmail.com protocol IMAP
  user manager@gmail.com is manager@company.ru here
  password *********
  keep
  ssl
После этого остается лишь перезапустить fetchmail последовательным вводом команд service fetchmail stop и service fetchmail start, а затем проверить работу службы путем отправки тестового письма на внешний почтовый ящик. Таким образом, даже после внедрения собственного почтового сервера Zimbra на предприятии, можно избавить предприятие от необходимости информировать клиентов о смене почтового адреса.

Комментарии (10)


  1. alexkuzko
    04.03.2019 20:54

    А как вы решаете проблему с тем, что такие письма все будут помечены как прочтённые на удаленном сервере? А это зачастую неприемлемо.


    1. KaterinaZextras Автор
      05.03.2019 08:32

      Доброе утро. Действительно, в настоящее время все полученные при помощи fetchmail письма помечаются как прочтенные и избежать этого нельзя. Если не сложно, то можете ли вы привести примеры ситуаций, в которых возникает необходимость оставлять письма непрочитанными?

      Лично мне приходит на ум только ситуация, когда необходимо дополнительно синхронизировать почтовый ящик с мобильным устройством, и прочитанные письма могут на нем просто не отображаться. Но тут проблема в использовании POP3 вместо IMAP. Стоит лишь настроить получение почты на смартфоне по IMAP, как на него начнут приходить все письма, независимо от того, прочитаны они или нет.


      1. alexkuzko
        05.03.2019 09:27

        Как раз ситуация была как у вас в статье: надо было подключить внешние ящики некоторым пользователям. При этом ящики должны были оставаться независимыми.
        Пользователи не приняли объяснение вида «так и должно было быть» и пришлось отказаться от такой интеграции и делать свою.


        1. KaterinaZextras Автор
          05.03.2019 09:49

          А можете поделиться своим решением этого вопроса, если это не составит труда, и если в нем нет какой-нибудь коммерческой тайны?


          1. savostin
            05.03.2019 10:55

            Простой скрипт на php по imap разгребет все, что нужно с фильтрами, статусами и пр.


          1. alexkuzko
            05.03.2019 11:19

            Хватило imapsync, но это все равно считают костылем.


  1. AcidVenom
    06.03.2019 08:42

    Стоп, а чем это отличается от «внешней учетной записи» в настройках?


    1. KaterinaZextras Автор
      06.03.2019 09:32

      Отличие, на самом деле, всего одно, но довольно весомое. Внешнюю учетную запись настраивает сам пользователь, а настройки fetchmail управляются администратором и хранятся в довольно укромном месте на сервере в plain text. Таким образом, сотрудник, который занимается мониторингом старой почты, не будет знать пароль от нее, а сам пароль не потеряется после очередной смены кадров на предприятии.

      Как говорится, не стоит недооценивать уровень бардака, который царит в малых предприятиях, и как он может «аукнуться» при попытке систематизировать бизнес-процессы в компании. Мы же стараемся делиться лучшими практиками и наиболее оптимальными решениями ситуаций, с которыми могут столкнуться пользователи Zimbra.


      1. AcidVenom
        06.03.2019 10:07

        Да, достаточно весомо.
        А вот вопрос не по теме, но достаточно часто встречающийся: как переписать адрес отправителя при отправке почты на нелокалый домен?
        У нас изолирована почта от внешнего мира, нужно разрешить отправку наружу только избранным. Как бы так переписать отправителя mail@local на mail1@mail.ru, чтобы все это уходило наружу?


        1. KaterinaZextras Автор
          06.03.2019 10:46

          А вы пробовали параметр zimbraMtaSenderCanonicalMaps?

          Возможно помогут команда
          zmprov mcf zimbraMtaSenderCanonicalMaps 'pcre:/opt/zimbra/conf/postfix_sender_canonical'

          И внесение этих изменений в файл postfix_sender_canonical:

          cat /opt/zimbra/conf/postfix_sender_canonical
          /^(.*@)localdomain$/ ${1}realdomain.com