автоматизация: пошлите по электронной почте файл - PullRequest
2 голосов
/ 06 ноября 2008

У меня дома есть компьютер, к которому я не могу получить доступ с работы. Я хотел бы иметь возможность просматривать результаты работы, которую производит мой домашний компьютер. Лучшая идея, которую я придумала, - это автоматический скрипт, работающий на моем домашнем компьютере, который отправляет мне результаты по электронной почте (из текстового файла или stderr / out), когда они завершены.

Я неплохо справляюсь с bash (у меня есть linux machine) и java, так что ответ с использованием одного или обоих из них будет идеальным, но если есть что-то более простое, это тоже хорошо.

Обычно я использую Gmail, но у меня также есть почта Yahoo.

Мой вопрос таков: каковы основные шаги в решении этой проблемы? Я могу делать мелкие мелочи, но не могу понять, как это будет работать.

Пожалуйста, помогите.

JBU

Ответы [ 7 ]

3 голосов
/ 04 декабря 2008

Как настроить ssmtp для отправки через учетную запись Gmail

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

Сначала создайте запасную учетную запись в Gmail, которую вы будете использовать только для отправка электронной почты. Например, если ваша обычная учетная запись user@gmail.com, создать учетную запись user.noreply@gmail.com с новым паролем который вы будете использовать только для этой учетной записи [1].

Настройка новой учетной записи для пересылки всей электронной почты на обычную учетную запись [2] и в настройках учетной записи вы должны добавить все другие адреса электронной почты вам используйте [3].

Затем установите ssmtp (в Debian: aptitude install ssmtp) и отредактируйте файл конфигурации ssmtp /etc/ssmtp/ssmtp.conf:

root=user@gmail.com
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=user.noreply
AuthPass=passwdusedonlyforthisaccount
FromLineOverride=YES

и настройте локальную доставку почты, отредактировав /etc/ssmtp/revaliases при условии, что ваш локальный логин localuser:

root:user@gmail.com:smtp.gmail.com:587
localuser:user@gmail.com:smtp.gmail.com:587

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

Проверьте настройки, например, mailx (в Debian: aptitude install bsd-mailx):

echo 'testing, one, two' | mailx -s 'test 1' user@gmail.com

Надеюсь, это поможет.


[1] Новое имя пользователя и пароль gmail будут видны всем, кто можете войти на свой компьютер, поэтому вы не хотите, чтобы эта учетная запись была критически в любом случае, то есть вы можете закрыть его немедленно, если кто-то должен получить к нему доступ.

[2] Если какое-то письмо, которое вы отправили, возвращается вам, возможно, вы захотите узнать об этом, и на самом деле существуют люди, которые с радостью ответят на электронная почта от johnsmith.noreply.

[3] Gmail перезапишет заголовок From в письме, если не распознает адрес.

[4] Ssmtp запускается как локальный пользователь, который отправляет электронную почту, так что пользователю нужно доступ для чтения к файлам конфигурации.

2 голосов
/ 06 ноября 2008

В любом Linux, который я использовал, отправка почты из командной строки проста:

mail -s "My subject here" recipient@wherever.com <message_body.txt

AFAIK, он выступает в качестве внешнего интерфейса для sendmail, и вы должны настроить sendmail для пересылки сообщений на ваш почтовый сервер ISP.

1 голос
/ 06 ноября 2008

Если у вас есть netcat, эта команда отправит вам электронное письмо:

Данный файл в этом формате (из Википедии):

HELO relay.example.org
MAIL FROM:<bob@example.org>
RCPT TO:<alice@example.com>
RCPT TO:<theboss@example.com>
DATA
From: "Bob Example" <bob@example.org>
To: Alice Example <alice@example.com>
Cc: theboss@example.com
Date: Tue, 15 Jan 2008 16:02:43 -0500
Subject: Test message

Hello Alice.
This is a test message with 5 headers and 4 lines in the body.
Your friend,
Bob
.
QUIT

Затем подключите его к SMTP-серверу, к которому у вас есть доступ:

nc mail.somewhere.com 25 < file.txt

Затем будет отправлено электронное письмо. Вы можете увидеть, как вы можете создать Java-программу, которая сделает это за вас (просто выполните команды).

1 голос
/ 06 ноября 2008

Вы не можете получить доступ к домашнему компьютеру с работы, что исключает возможность «удаленной поддержки».

Можете ли вы получить доступ к другим компьютерам в Интернете? Если это так, вы можете просто настроить один из вариантов онлайн-хранилища и затем передать результаты с вашего домашнего компьютера. Это намного проще, чем пытаться писать сценарии или код для генерации электронных писем с вложениями или чем-то еще.

Вы можете просматривать внешний компьютер с работы.

0 голосов
/ 04 декабря 2008

Конечно, ваш домашний провайдер, вероятно, также заблокировал общий порт SMTP.

0 голосов
/ 06 ноября 2008

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

Создайте отдельную Java-программу, которая следит за каталогом, в котором ваш домашний компьютер сохраняет файл. Используйте JavaMail API , чтобы прикрепить и отправить файл на любой адрес электронной почты.

Если вы также знакомы с Spring Framework , он имеет хороший уровень абстракции для работы с JavaMail и делает подобные вещи тривиальными.

0 голосов
/ 06 ноября 2008

Традиционно, в Unix-системах, таких как Linux, на компьютере, который занимается отправкой электронной почты, есть MTA, агент пересылки почты.

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

Это уже не обязательно так, поскольку почтовые клиенты, такие как Thunderbird, включают свои собственные MTA, так же, как почтовые клиенты в Windows.

Однако вполне вероятно, что ваш дистрибутив установит какой-либо MTA или другой по умолчанию, если только по той причине, что другие компоненты вашей системы, такие как cron, захотят отправлять электронную почту. Как правило, это инструмент командной строки, называемый sendmail (sendmail является исходным MTA [необходимо цитирование], другие MTA поддерживают совместимость с его интерфейсом, и он стал своего рода стандартом), который можно использовать из сценария оболочки для отправки электронного письма. почта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...