Как отправить письмо с моего сервера CentOS?


21

Я только что построил скромный домашний сервер, используя 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)

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


1
Ты пытался? Какие проблемы вы видите?
Игнасио Васкес-Абрамс

Я не уверен, что я ищу. Я ищу в Google и вижу учебники по настройке почтового сервера Linux. Это то, что я хочу?
Джейк Уилсон

Просто заметил, что это все еще без ответа. Из любопытства, вы поняли это? Вы проверили, был ли аппарат указан в PBL? spamhaus.org/pbl
Бельмин Фернандес

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

Я даже попробовал простую команду, которую я перечислил выше, отправив на учетную запись электронной почты 10minutemail.com с тем же результатом и тем же лог-сообщением
Джейк Уилсон

Ответы:


13

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

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


1
+1 Вам не нужен почтовый сервер в системе для отправки почты, так же как вам не нужен почтовый сервер на рабочем столе для отправки почты. Почтовая программа просто отлично.
dunxd

1
Я попробовал эту команду, и она не сработала. Никаких ошибок или чего-либо еще. Просто в моем почтовом ящике нет почты. Посмотрите выше на то, что говорит мой почтовый журнал
Джейк Уилсон

Итак ... какая-то причина, почему это не работает для меня? Какой журнал я должен посмотреть, чтобы определить, почему я не получаю почту?
Джейк Уилсон

6

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

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

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

Если вы спрашиваете это, вы , вероятно , не только опережать и настройки Sendmail justtt еще.

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

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

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

  3. И последнее, но не менее важное: вам действительно нужно использовать собственную службу SMTP? Любая причина, почему использование вашего провайдера недостаточно хорошо?

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


3

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

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

yum install mailx

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

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


2

Вам нужно сделать следующее:

  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 Test
  3. тело письма.
  4. .

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

Выше вы получите работающий MTA (Mail Transfer Agent). Некоторые ресурсы, которые помогут вам с более сложными настройками, можно найти в статьях slicehost по настройке электронной почты для CentOS (прокрутите вниз до раздела CentOS и электронной почты). Вы действительно должны правильно настроить следующие параметры: записи имени хоста, RDNS (обратный DNS) и SPF (платформа политики отправителя) с вашим поставщиком DNS.


Это блестящий ответ - коротко и работает.
Monkjack

1

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


1
Содержание /etc/mail.rcявляется set ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path ViaЧто вы предлагаете мне делать?
Джейк Уилсон

0

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


0

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

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

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

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

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


0

Простым решением является не 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.