Як надіслати електронний лист із моїм сервером CentOS?


21

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

Я знаю, що є мільйон результатів пошуку 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
Я спробував цю команду, і вона не спрацювала. Ніяких помилок чи нічого. Тільки жодна пошта не відображається у моїй вхідній пошті Gmail. Подивіться вище, що говорить мій поштовий журнал
Джейк Вілсон,

Отже ... будь-яка причина, чому це не працює для мене? Який журнал я повинен дивитись, щоб визначити, чому я не отримую жодної пошти?
Джейк Вілсон

6

Проста відповідь:

Налаштуйте sendmail . Це залежатиме від вашого розповсюдження, але це зовсім не складно. Якщо у вас є якісь конкретні запитання, попросіть подати.

Складна відповідь:

Якщо ви це запитуєте, ви, мабуть, не повинні просто просто стрибати пістолет і налаштовувати sendmail justtt .

Вам потрібно буде взяти до уваги кілька речей:

  1. Чи дозволяє ваш Інтернет-провайдер вам надсилати електронні листи? Можливо, ви знаходитесь у несерверному діапазоні IP, і тому багато постачальників електронної пошти заблокують вас прямо.

  2. Яку адресу ви будете використовувати як свою адресу? Чи маєте Ви право на надсилання з цієї адреси (SPF, DomainKeys тощо)? Якщо ні, то ваші повідомлення можуть бути визнані спамом постачальниками електронної пошти --- і це правильно.

  3. І останнє, але, безумовно, не менш важливе: чи дійсно вам потрібно використовувати власний сервіс SMTP? Будь-яка причина, чому використання вашого провайдера недостатньо хороша?

Ще в ті часи налаштування SMTP-сервера не була великою справою. Сьогодні налаштування може бути простішим, але налаштування його таким чином, щоб він фактично отримував повідомлення на поштові скриньки людей , є проблемою.


3

Я можу підтвердити, що жодна з перерахованих вище пропозицій не працює і в моїй системі CentOS вдома - ні одна. Що дратує!

Потім я спробував те ж саме на свіжому екземплярі Amazon під управлінням CentOS 6.4, і навіть при налаштуваннях за замовчуванням я можу надсилати пошту без проблем. Все, що я мав зробити, це було

yum install mailx

після чого надсилання пошти, як описано вище, працює як шарм. Встановлення таких ускладнень, як sendmail, НЕ потрібне для того, що намагається зробити Якуб.

Це має бути певна конфігурація з моїм провайдером, оскільки я не маю налаштованого брандмауера на своєму кінці.


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. поштова адреса@example.com Тема:
  2. Тест електронної пошти від demoslice.com Test
  3. тіло електронної пошти.
  4. .

№ 4 - просто повна зупинка для заповнення тексту електронної пошти. Тепер ви повинні мати пошту.

Вищезгадане отримає вам діючу MTA (агент з передачі пошти). Деякі ресурси, які допоможуть вам у більш розширеному налаштуванні, можна знайти в статтях slicehost про налаштування електронної пошти для CentOS (прокрутіть униз до розділу CentOS та електронної пошти). Справді слід подумати про те, щоб правильно встановити наступне: ім’я хоста, RDNS (зворотний DNS) та SPF (Sender Policy Framework) записи у вашого постачальника 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

Спробуйте встановити постфікс і встановіть мідестинацію у файл конфігурації, навіть якщо це має працювати з sendmail.


0

Postfix стоїть на правильному шляху, але, якщо gmail не вважає, що ви хоча б віддалено легітимуєте (наприклад, ви не спамер), доставка вашої пошти є малоймовірною.

Цей процес дещо задіяний для розміщення тут, але найпростіший спосіб, який я знайшов, щоб досягти цього (і доставити вашу пошту) - це встановити постфікс як ретрансляцію, використовуючи свій власний акаунт 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.