Если у вас есть учетная запись Gmail, вы можете настроить свой MTA для ретрансляции исходящей почты через Gmail.
Это дает вам преимущество надежной инфраструктуры Gmail и предоставляет простые средства отправки электронной почты из командной строки.
В этом уроке мы будем использовать Postfix в качестве нашего MTA.
Postfix — это бесплатный, с открытым исходным кодом, активно поддерживаемый и высоконадежный агент передачи почты.
На каждом этапе мы рассмотрим инструкции, относящиеся к следующим операционным системам:
- Debian 9
- Ubuntu 18.04 LTS
- CentOS 7
- OpenSUSE Leap 15.0
- Arch Linux 2019.03.01
- FreeBSD 12.0
Мы также установим mailutils / mailx, чтобы мы могли отправить тестовое письмо.
При необходимости мы установим дополнительные библиотеки SASL.
Все команды, начинающиеся с #, требуют прав суперпользователя.
1. Установите необходимое программное обеспечение
Debian, Ubuntu:
1 |
apt-get update && apt-get install postfix mailutils |
В ответ на запрос «General type of mail configuration» выберите Internet Site.
Когда вам будет предложено ввести «Имя почты», выберите имя хоста, которое будет использоваться в заголовках писем в качестве источника ваших писем.
Полное доменное имя является предпочтительным, но с помощью простого имени хоста вашей машины все в порядке.
Независимо от того, что вы введете здесь, ваш обратный адрес будет отображаться для получателей как ваш адрес Gmail.
Вам может быть предложено установить «Root and postmaster mail recipient».
Введите root или другого пользователя, который должен получать уведомления почтовой подсистемы.
Для любых других подсказок вы можете выбрать значения по умолчанию.
Fedora:
1 |
dnf update && dnf install postfix mailx |
CentOS:
1 |
yum update && yum install postfix mailx cyrus-sasl cyrus-sasl-plain |
OpenSUSE:
1 |
zypper update && zypper install postfix mailx cyrus-sasl |
Arch Linux:
1 |
pacman -Sy postfix mailutils |
FreeBSD:
Скомпилируйте Postfix, чтобы включить поддержку SASL:
1 |
portsnap fetch extract update |
1 |
cd /usr/ports/mail/postfix |
1 |
make config |
В диалоговых окнах конфигурации выберите поддержку SASL. Все остальные параметры могут остаться прежними. Затем:
1 |
make install clean |
Mailx может быть установлен из бинарного пакета:
1 |
pkg install mailx |
2. Настройка аутентификации Gmail
Создайте или измените файл паролей, который будет использоваться Postfix для аутентификации в Gmail.
В приведенной ниже информации об аутентификации замените имя пользователя своим именем пользователя и пароль Gmail на свой пароль.
Если вы используете собственное доменное имя Gmail Apps, вы можете заменить gmail.com своим доменом Google Apps.
Файл пароля будет находиться в каталоге конфигурации Postfix.
Файл может называться как угодно, но рекомендуемое имя файла — sasl_passwd.
Debian, Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux:
Конфигурационные файлы Postfix находятся в каталоге /etc/postfix. Создайте или отредактируйте файл паролей:
1 |
nano /etc/postfix/sasl_passwd |
Добавьте строку:
1 |
[smtp.gmail.com]:587 username@gmail.com:password |
Сохраните и закройте файл.
Ваш пароль Gmail хранится в виде открытого текста, поэтому файл должен быть доступен только пользователю root:
1 |
chmod 600 /etc/postfix/sasl_passwd |
FreeBSD:
Конфигурационные файлы Postfix находятся в каталоге /usr/local/etc/postfix. Создайте или отредактируйте файл паролей:
1 |
nano /usr/local/etc/postfix/sasl_passwd |
Добавьте строку:
1 |
[smtp.gmail.com]:587 username@gmail.com:password |
Сохраните и закройте файл. Сделать его доступным только для root:
1 |
chmod 600 /usr/local/etc/postfix/sasl_passwd |
3. Настройка Postfix
Существует шесть параметров, которые должны быть установлены в файле конфигурации Postfix main.cf.
Параметры:
relayhost, который указывает почтовый хост-хост и номер порта. Имя хоста будет заключено в квадратные скобки, чтобы указать, что поиск MX не требуется.
smtp_use_tls, который включает (или отключает) безопасность транспортного уровня.
smtp_sasl_auth_enable, который включает (или отключает) аутентификацию SASL.
smtp_sasl_security_options, который в следующей конфигурации будет установлен пустым, чтобы гарантировать, что никакие параметры безопасности, несовместимые с Gmail, не используются.
smtp_sasl_password_maps, который указывает файл паролей. Этот файл будет скомпилирован и хеширован postmap на следующем шаге.
smtp_tls_CAfile, который указывает список центров сертификации, которые будут использоваться при проверке подлинности сервера.
Debian, Ubuntu, Arch Linux:
Отредактируйте основной файл конфигурации Postfix:
1 |
nano /etc/postfix/main.cf |
Добавьте или измените следующие значения:
1 2 3 4 5 6 |
relayhost = [smtp.gmail.com]:587 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_security_options = smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt |
Сохраните и закройте файл.
Fedora, CentOS:
Отредактируйте основной файл конфигурации Postfix:
1 |
nano /etc/postfix/main.cf |
Добавьте или измените следующие значения:
1 2 3 4 5 6 |
relayhost = [smtp.gmail.com]:587 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_security_options = smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt |
Сохраните и закройте файл.
OpenSUSE:
Отредактируйте основной файл конфигурации Postfix:
1 |
nano /etc/postfix/main.cf |
Добавьте или измените следующие значения:
1 2 3 4 5 6 |
relayhost = [smtp.gmail.com]:587 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_security_options = smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_tls_CAfile = /etc/ssl/ca-bundle.pem |
Сохраните и закройте файл.
OpenSUSE также требует изменения файла конфигурации главного процесса Postfix master.cf.
Откройте его для редактирования:
1 |
nano /etc/postfix/master.cf |
Найдите строку, которая гласит:
1 |
#tlsmgr unix - - n 1000? 1 tlsmg |
Раскомментируйте ее
1 |
tlsmgr unix - - n 1000? 1 tlsmg |
Сохраните и закройте файл.
FreeBSD:
Отредактируйте основной файл конфигурации Postfix:
1 |
nano /usr/local/etc/postfix/main.cf |
Добавьте или измените следующие значения:
1 2 3 4 5 6 |
relayhost = [smtp.gmail.com]:587 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_security_options = smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd smtp_tls_CAfile = /etc/mail/certs/cacert.pem |
Сохраните и закройте файл.
4. Обработка файла паролей
Используйте postmap для компиляции и хэширования содержимого sasl_passwd.
Результаты будут сохранены в вашем каталоге конфигурации Postfix в файле sasl_passwd.db.
Debian, Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux:
1 |
postmap /etc/postfix/sasl_passwd |
FreeBSD:
1 |
postmap /usr/local/etc/postfix/sasl_passwd |
5. Перезапустите Postfix
Перезапустите сервис Postfix, чтобы ваши изменения вступили в силу.
Debian, Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux:
1 |
systemctl restart postfix.service |
FreeBSD:
Чтобы запустить службу Postfix только для этого сеанса:
1 |
service postfix onestart |
Чтобы запустить Postfix автоматически при инициализации системы, откройте /etc/rc.conf на редактирование:
1 |
nano /etc/rc.conf |
Добавьте строку:
1 |
postfix_enable=YES |
Сохраните и закройте файл. Затем вы можете запустить:
1 |
service postfix start |
6. Включить «Небезопасные приложения» в Gmail
По умолчанию для вашей учетной записи Gmail разрешены только самые безопасные входы, такие как вход в Gmail в Интернете.
Чтобы разрешить запросы ретрансляции, войдите в свою учетную запись Gmail и включите Разрешить небезопасные приложения.
Для получения дополнительной информации ознакомьтесь с документом службы поддержки Google Как разрешить небезопасным приложениям доступ к аккаунту
7. Отправить тестовое письмо
Проверьте вашу новую конфигурацию, отправив электронное письмо с помощью команды mail:
Проверьте вашу новую конфигурацию, отправив электронное письмо с помощью команды mail.
1 |
mail -s "Test subject" recipient@domain.com |
Вам будет представлена пустая строка (или поле CC:, которое вы можете обойти, нажав Enter).
Введите текст вашего сообщения, нажав Enter для новой строки.
Когда вы закончите составлять письмо, введите CTRL-D, чтобы отправить его.
Чтобы отменить электронное письмо, дважды нажмите CTRL-C.
Чтобы отправить заранее составленное письмо, используйте команду:
1 |
mail -s "Subject Here" recipient@domain.com < textfile |
Где textfile — это имя файла, содержащего текст для отправки.
Поиск проблемы
Если это не работает, проверьте журналы на наличие ошибок Postfix:
Debian:
1 |
less /var/log/mail.log |
Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux:
1 |
journalctl |
FreeBSD:
1 |
less /var/log/maillog |
Если вы получаете ошибки аутентификации из Gmail, убедитесь, что в настройках учетной записи Gmail включен параметр «Разрешить небезопасные приложения», как указано в шаге 6.
Убедитесь, что файл паролей sasl_passwd существует и что его содержимое правильно отформатировано, как указано в шаге 2.
Если вы вносите какие-либо изменения в файл паролей, обязательно повторите шаги 4 и 5, чтобы хэшировать новый файл паролей, и перезапустите Postfix.
Если вы видите какие-либо ошибки TLS, дважды проверьте конфигурацию в main.cf, как указано в шаге 3.
Если вы внесете какие-либо изменения в конфигурацию, перезапустите Postfix, как указано в шаге 5.