Я только что построил скромный домашний сервер на 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 все же.
Вам необходимо принять во внимание несколько вещей:
Ваш провайдер позволяет вам отправлять электронную почту? Возможно, вы находитесь в диапазоне IP-адресов, отличных от сервера, и поэтому многие провайдеры электронной почты заблокируют ваш прямой доступ.
Какой адрес вы будете использовать в качестве адреса отправителя? Вы авторизованы для отправки с этого адреса (SPF, DomainKeys и т. Д.)? В противном случае ваши сообщения могут быть определены провайдерами электронной почты как спам - и это правильно.
И последнее, но не менее важное: действительно ли вам нужно использовать собственный SMTP-сервис? Есть ли причина, по которой использование вашего интернет-провайдера недостаточно?
В те времена настройка SMTP-сервера не представляла большого труда. В настоящее время установка может быть проще, но настроить ее так, чтобы получает сообщения в почтовые ящики людей, это вызов.
Я могу подтвердить, что ни одно из приведенных выше предложений не работает в моей системе CentOS дома - ни одно. Что раздражает!
Затем я попробовал то же самое на новом экземпляре Amazon под управлением CentOS 6.4, и даже с конфигурацией по умолчанию я мог без проблем отправлять почту. Все, что мне нужно было сделать, это
yum install mailx
после чего отправка почты, как описано выше, работает как шарм. Установка таких сложностей, как sendmail, НЕ обязательна для того, что пытается сделать Jakub.
Это должна быть некоторая конфигурация с моим интернет-провайдером, так как у меня здесь нет настраиваемого брандмауэра.
Вам необходимо сделать следующее:
sudo yum install postfix telnet mailx
sudo /etc/init.d/postfix start
sudo vi /etc/postfix/main.cf
+ Изменить mydestination = mydomain.com, localhost.mydomain.com, localhost
к
mydestination = localhost.mydomain.com, localhost
Протестируйте, используя следующую команду из командной строки
.
№ 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