Назад | Перейти на главную страницу

Как отправлять электронную почту с моего сервера CentOS?

Я только что построил скромный домашний сервер на CentOS 5.5. Я хочу, чтобы сервер мог отправлять электронные письма на мою учетную запись Gmail или другие учетные записи электронной почты для различных вещей, таких как задания cron. Также было бы неплохо иметь возможность отправлять электронную почту через приложения PHP, которые я также запускаю / разрабатываю на сервере. Или даже иметь возможность для сервера отправлять электронные письма с помощью команды mail.

Я знаю, что есть миллион результатов поиска Google о настройке вашего Linux-сервера в качестве сервера электронной почты или настройке sendmail и т. Д. Но они, похоже, не то, что я ищу ... по крайней мере, я так не думаю. Я не пытаюсь настроить какой-то корпоративный сервер, к которому другие клиенты могут подключаться для отправки электронных писем или чего-то такого сложного.

Я просто хочу, чтобы мой сервер присылал мне электронные письма о разных вещах. Похоже, это должно быть просто ... Кто-нибудь может указать мне правильное направление?

ОБНОВИТЬ

По запросу пользователей ниже я попробовал эту команду:

/bin/mail -s "My Subject" "myaddress@gmail.com" < /home/john/test

Ни ошибок, ни чего. Но письмо так и не появилось в моем почтовом ящике. Вот мой maillog

Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: from=root, size=10906, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<root@localhost.localdomain>, size=11209, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: to=myaddress@gmail.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=40906, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o9R6qJOd013703 Message accepted for delivery)

Какие-нибудь подсказки?

/bin/mail -s "Enter Subject Line here" -a /home/.../whateverFileYouWantAttached "you@YourEmailAddress" < /home/me/textBody.letter

попробуйте команду выше :)

Простой ответ:

Настроить sendmail. Это будет зависеть от вашего дистрибутива, но это совсем несложно. Если у вас есть какие-то конкретные вопросы, задавайте их.

Сложный ответ:

Если вы спрашиваете об этом, вам, вероятно, не следует просто прыгать и настраивать sendmail. Justtt все же.

Вам необходимо принять во внимание несколько вещей:

  1. Ваш провайдер позволяет вам отправлять электронную почту? Возможно, вы находитесь в диапазоне IP-адресов, отличных от сервера, и поэтому многие провайдеры электронной почты заблокируют ваш прямой доступ.

  2. Какой адрес вы будете использовать в качестве адреса отправителя? Вы авторизованы для отправки с этого адреса (SPF, DomainKeys и т. Д.)? В противном случае ваши сообщения могут быть определены провайдерами электронной почты как спам - и это правильно.

  3. И последнее, но не менее важное: действительно ли вам нужно использовать собственный SMTP-сервис? Есть ли причина, по которой использование вашего интернет-провайдера недостаточно?

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

Я могу подтвердить, что ни одно из приведенных выше предложений не работает в моей системе CentOS дома - ни одно. Что раздражает!

Затем я попробовал то же самое на новом экземпляре Amazon под управлением CentOS 6.4, и даже с конфигурацией по умолчанию я мог без проблем отправлять почту. Все, что мне нужно было сделать, это

yum install mailx

после чего отправка почты, как описано выше, работает как шарм. Установка таких сложностей, как sendmail, НЕ обязательна для того, что пытается сделать Jakub.

Это должна быть некоторая конфигурация с моим интернет-провайдером, так как у меня здесь нет настраиваемого брандмауэра.

Вам необходимо сделать следующее:

  1. sudo yum install postfix telnet mailx
  2. sudo /etc/init.d/postfix start
  3. sudo vi /etc/postfix/main.cf
  4. + Изменить mydestination = mydomain.com, localhost.mydomain.com, localhost

    к

    mydestination = localhost.mydomain.com, localhost

Протестируйте, используя следующую команду из командной строки

  1. mail address@example.com Тема:
  2. Тестовое письмо от demoslice.com Тест
  3. тело письма.
  4. .

№ 4 - есть просто точка, чтобы заполнить тело письма. Теперь у вас должна быть почта.

Вышеуказанное даст вам рабочий MTA (агент пересылки почты). Некоторые ресурсы, которые помогут вам в более сложной настройке, можно найти на Slicehost's статьи о настройке электронной почты для CentOS (прокрутите вниз до раздела CentOS и электронная почта). Вам действительно следует подумать о правильной настройке следующего: имя хоста, RDNS (обратный DNS) и SPF (Sender Policy Framework) записи с вашим поставщиком DNS.

Вы изменили свой /etc/mail.rc, чтобы установить адрес smtp?

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

Postfix находится на правильном пути, но если Gmail не считает, что вы хотя бы отдаленно законны (например, вы не спамер), доставка вашей почты маловероятна.

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

Процесс, который я использую, подробно описан здесь:

http://rs20.mine.nu/w/2011/07/gmail-as-relay-host-in-postfix/

Не требуется настраивать самоподписанные сертификаты (согласно sendmail), и, по моему опыту, это просто работает!

Простое решение - не sendmail, а sendEmail:

http://caspian.dotconf.net/menu/Software/SendEmail/#download

Perl-скрипт, который легко настраивается для отправки через любой SMTP-сервер, к которому вы можете добраться - я использую его для отправки через учетные записи Gmail все время, но он также работает для обычного SMTP через TCP на порту 25 и т. Д.

Я обычно оборачиваю perl-скрипт sendEmail моим собственным скриптом оболочки для Gmail:

#!/bin/bash

# Send gmail through an account specified in ~/.sendGmailAuthFile (or file identified with -k.)
# The auth file must have values for the -f (from@domain) and -xp (password) options of sendEmail,
# structured as:
#
#    user=me.surnamen@gmail.com
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "test@whatever.com" < message.txt

function sendGmailImmed {
        local authFile="$HOME/.sendGmailAuthFile"
        for arg in "$@"; do
                if [[ "$arg" == "-k" ]]; then
                        shift
                        authFile="$1"
                        shift
                fi
        done
        initAuthFile $authFile
        source $authFile

        sendEmail -f $user -xu $user -xp $pwd -s smtp.gmail.com:587 -o tls=yes "$@"
}

function initAuthFile {
        # If the authfile doesn't exist, we'll create a dummy:
        if [[ ! -f $1 ]]; then
                echo "# sendGmail authentication file: " > $1
                echo "user=my.name@gmail.com" >> $1
                echo "pwd=my-password" >> $1
                echo "A shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi