ЦЕЛЬ: получить текстовый файл с моего файлового сервера в почтовый ящик Gmail.
На файловом сервере работает Ubuntu Server 8.04. В настоящее время я использую SSH время от времени для проверки журналов, статистики SMART для жестких дисков и т. Д. Я собираюсь настроить запланированный сценарий, который запускает некоторые команды и отправляет мне результат по электронной почте.
Единственная проблема, с которой я столкнулся, - это фактическое получение электронного письма. У меня нет опыта работы с конфигурацией электронной почты под Linux, и все руководства, указывающие на sendmail, похоже, предполагают многое от моего имени и моей текущей конфигурации. Серверы настроены для совместного использования файлов с самбой, а НЕ в качестве почтовых, веб-серверов или DNS-серверов. Я не хочу запускать почтовый сервер или маршрутизировать что-либо с сервера или получать почту на (или с) сервером, если что-либо из этого не помогает мне достичь цели. Файловый сервер находится в нашей обычной сети и имеет доступ в Интернет.
У меня есть несколько доменов веб-сайтов (и есть пакет хостинга). Мне удалось настроить такие приложения, как thunderbird, для отправки почты, используя одну из учетных записей с моего веб-сайта, заполнив smtp.mydotcom.com для использования исходящим сервером и изменив порты и т. Д. В соответствии с информацией со страницы конфигурации cpanel моего веб-сайта . Есть ли способ сделать что-то подобное, чтобы я мог отправить электронное письмо с моего файлового сервера на мой внешний адрес электронной почты?
РЕДАКТИРОВАТЬ: Вот шаги, которые я предпринял после прочтения ответа Денниса Уильямсона ниже. Я был готов к работе всего за несколько минут!
Установите esmtp:
sudo apt-get install esmtp
Я создал новую учетную запись электронной почты на своем веб-сайте (она называется «оповещения») и отредактировал / etc / esmtprc следующим образом:
hostname = mail.mydomain.com: 26
имя пользователя = оповещения + mydomain.com
(Эти значения были предоставлены на странице администратора cpanel)
Затем я создал файл с названием «eheader» с верхней частью электронной почты по умолчанию:
Кому: Мне <me@gmail.com>
От: Alerts <alerts@mydomain.com>
Тема: темаТело сообщения
Итак, чтобы отключить почту, можно использовать следующую команду:
cat eheader <файл1> <файл2> ... <файлN> | / usr / bin / esmtp -t
Таким образом, легко изменить, какие файлы отправляются для ежедневных / еженедельных / других заданий.
я использую esmtp
, который для этой цели является MTA только для отправки. Настроить очень просто. Он имеет параметры командной строки, совместимые с sendmail (некоторые игнорируются). Это в репозиториях.
Вот простой пример:
echo -e "To: Recipient Name <person@example.com>\n\
From: Me Myself and I <me@gmail.com>\n\
Subject: Here is the example I promised\n\n\
$(<somefile)" | /usr/bin/esmtp -t
Это отправляет содержимое файла с именем "somefile".
Есть очень простой файл конфигурации, /etc/esmtprc
, который содержит имя хоста, имя пользователя и пароль для вашего вышестоящего провайдера электронной почты (я предполагаю, что ваш - gmail).
Инструкции по настройке для Gmail: Вот.
Что вам нужно сделать, так это настроить SMTP-сервер в поле Ubuntu, который настроен для пересылки на настоящий SMTP-сервер (в вашей сети или у вашего провайдера), например ssmtp или esmtp. Вот список облегченных (документация Mutt):
http://wiki.mutt.org/?LightSMTPagents
Обновить:
Поскольку вы используете Ubuntu, у вас установлен Exim.
Вы можете настроить его с помощью sudo dpkg-reconfigure exim4-config
. Настроить ретрансляцию почты довольно просто, если вы прочитали некоторые документы.
/Обновить
Ниже приведены настройки SMTP-сервера Gmail для отправки почты через Gmail из любой клиентской программы электронной почты:
Наконец, вы напишете сценарий, который вызывает почтовый клиент командной строки, такой как mutt (я не верю, что mail или mailx делают вложения). Вы также можете использовать почтовые API Perl или Python. Сценарий создает электронное письмо и прикрепляет нужные файлы.
Наконец, вы должны добавить запись crontab для ежедневного запуска скрипта (или любого другого интервала, который вы хотите):
01 * * * * root echo "This command is run at one min past every hour"
17 8 * * * root echo "This command is run daily at 8:17 am"
17 20 * * * root echo "This command is run daily at 8:17 pm"
00 4 * * 0 root echo "This command is run at 4 am every Sunday"
* 4 * * Sun root echo "So is this"
42 4 1 * * root echo "This command is run 4:42 am every 1st of the month"
01 * 19 07 * root echo "This command is run hourly on the 19th of July"
Видеть man crontab
и man cron
ЕЩЕ ОДИН ОБНОВЛЕНИЕ:
Вы можете отправить электронное письмо из командной строки с помощью SendEmail
Посмотрите на ssmtp, замену sendmail, которая просто передает электронную почту на SMTP-сервер, с которым вы его настраиваете. Вероятно, это один из самых простых способов получить возможность программной отправки электронных писем. Поиск в Интернете по запросу "ssmtp" должен предложить множество руководств и инструкций по его настройке.
Кроме того, для большинства языков программирования / сценариев доступны библиотеки SMTP, поэтому, если вы знакомы, скажем, с Perl или Python, вы могли бы написать небольшой сценарий, который подключается к SMTP-серверу для отправки почты - в основном вы бы написали свой собственная, более простая версия ssmtp.
Вы хотите отправлять почту, но не настраиваете почтовый сервер. Заказ не сложный, но странный. Postfix может быть настроен на рассылку электронной почты за несколько секунд, и часто бывает полезно получать обычные электронные письма, отправленные root, например, уведомления о сбое компонентов MD raid.
Если вы не можете или не хотите настроить электронную почту в этой системе, что у нас осталось?
Если на одном из ваших серверов или сайтов веб-хостинга есть ssh и, вероятно, уже настроены почтовые службы, как насчет cron, который хранит файлы журналов с сервера и отправляет их по почте из системы, имеющей почту? Почта часто отправляется из unix с помощью команды mail или mailx.
mailx -s "the subject line" targetaddress@example.com < filetomail.txt
До этого вы могли поместить в этот файл информацию, о которой хотите сообщить, с любыми скриптами или командами cp, которые вам понадобятся. Если это работает лучше, вы можете разместить cron на сервере Ubuntu и заставить его выдавать команды ssh второму серверу, чтобы вытащить данные и отправить их по почте.
Я использую сценарий Perl с Почта :: Sendmail отправлять отчеты с моих серверов по электронной почте (и Net :: Twitter для обновлений статуса). Конечно, это означает иметь дело с CPAN, что может не стоить того, так как вам нужно make
пакеты.
!#/usr/bin/perl
use Mail::Sendmail;
%mail = ( To => 'you@there.com',
From => 'me@here.com',
Message => "This is a very short message"
);
sendmail(%mail) or die $Mail::Sendmail::error;
print "OK. Log says:\n", $Mail::Sendmail::log;
cat /var/log/file.log | mail -s "File logs" mail@domain.com
Попробуй это. Он будет работать в большинстве дистрибутивов Linux из коробки.
Попробуй шавку. Это очень универсальный. Разрешает использование командной строки, включая возможность отправлять вложения. Mutt по умолчанию установлен на сервере Ubuntu. Так что вы должны это иметь. Типичная командная строка выглядит так:
mutt -s 'The subject' -i message.txt myself@mydomain.com &
См. «Man mutt» для полных вариантов использования. У него также есть интерактивный режим, если вы просто введете «mutt» в терминал.