2

自宅に職場からアクセスできないコンピューターがあります。自宅のコンピューターで作成した作業の結果を表示できるようにしたいと考えています。私が思いついた最良のアイデアは、自宅のコンピューターで自動化されたスクリプトを実行して、完了時に (テキスト ファイルまたは stderr/out から) 結果を自分自身に電子メールで送信することです。

私は bash ( Linuxマシンを持っています) と Java に慣れているので、これらのいずれかまたは両方を使用した回答が理想的ですが、もっと簡単なものがあればそれも問題ありません。

私は普段gmailを使っていますが、yahooメールもあります。

私の質問はこれです: この問題を解決するための基本的な手順は何ですか? 私は核心的なことをすることができますが、このようなものがどのように機能するかの全体像を実際に把握することはできません.

助けてください。

jbu

4

7 に答える 7

3

Gmail アカウント経由で送信するように ssmtp を設定する方法

ここでの手順のいくつかは、最初は奇妙に思えるかもしれませんが、脚注に論理的根拠が示されています。

まず、Gmail で予備のアカウントを作成します。このアカウントは、メールの送信にのみ使用します。たとえば、通常のアカウントが の場合、新しく作成したパスワードでuser@gmail.comアカウントを作成しuser.noreply@gmail.comます。このパスワードは、このアカウントでのみ使用します [1]。

すべての電子メールを通常のアカウント [2] に転送するように新しいアカウントを設定し、[アカウント設定] で、使用する他のすべての電子メール アドレスを追加する必要があります [3]。

次に、ssmtp をインストールし (Debianaptitude install ssmtpの場合:)、ssmtp の構成ファイルを編集します/etc/ssmtp/ssmtp.conf

root=user@gmail.com
mailhub=smtp.gmail.com:587
STARTTLS=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

電子メールを送信できるすべてのユーザーが 2 つの構成ファイルを読み取れるようにしてください [4]。

たとえば、セットアップをテストしますmailx(Debian の場合: aptitude install bsd-mailx):

echo 'テスト、1、2' | mailx -s 'テスト 1' user@gmail.com

お役に立てれば。


[1] 新しい gmail のユーザー名とパスワードは、あなたのマシンにログオンできるすべてのユーザーに表示されるため、このアカウントを重要なものにしたくはありません。つまり、誰かがアクセスした場合はすぐに閉鎖できます.

[2] 送信したメールが戻ってきた場合は、それについて知りたいと思うかもしれません。また、 からのメールに喜んで返信する人が実際に存在しますjohnsmith.noreply

From[3]アドレスが認識されない場合、Gmail はメールのヘッダーを書き換えます。

[4] Ssmtp は、電子メールを送信するローカル ユーザーとして実行されるため、ユーザーには構成ファイルへの読み取りアクセスが必要です。

于 2008-12-04T20:20:20.603 に答える
2

私が使用した Linux では、コマンドラインからのメール送信は簡単です。

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

私の知る限り、これはsendmailのフロントエンドとして機能し、メッセージをISPメールサーバーに転送するようにsendmailを構成する必要があります。

于 2008-11-06T00:32:24.790 に答える
1

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 サーバーに netcat します。

nc mail.somewhere.com 25 < file.txt

これにより、電子メールが送信されます。これを行う Java プログラムを作成する方法を確認できます (コマンドを実行するだけです)。

于 2008-11-06T00:37:59.070 に答える
1

「リモートサポート」オプションを除外する職場から自宅のコンピューターにアクセスすることはできません.

インターネット上の他のコンピュータにアクセスできますか? その場合は、オンライン ストレージ オプションの 1 つを設定し、自宅のコンピューターから結果を ftp するだけで済みます。これは、スクリプトやコードを記述して、添付ファイルなどを含む電子メールを生成するよりもはるかに簡単です。

その後、職場から外部コンピューターを表示できます。

于 2008-11-06T00:32:23.573 に答える
0

従来、Linux などの UNIX システムでは、電子メールの送信を処理するコンピューター上に MTA (メール転送エージェント) がありました。

これは、exim のような完全な電子メール サーバー、または ISP によって提供される中継 SMTP サーバーにメッセージを送信するだけの ssmtp のような単純なものである可能性があります。

Windows のメール クライアントと同様に、Thunderbird などのメール クライアントには独自の MTA が含まれているため、これは必ずしも必要ではありません。

ただし、システム上の他のもの (cron など) が電子メールを送信できるようにしたいという事実以外の理由がなければ、ディストリビューションはデフォルトで MTA などをインストールする可能性があります。通常、sendmail と呼ばれるコマンド ライン ツールがあります (sendmail は元の MTA [要出典] で、他の MTA はそのインターフェイスとの互換性を維持しており、標準になっています)、シェル スクリプトから電子メールを送信するために使用できます。郵便物。

于 2008-11-06T00:02:23.040 に答える
0

私の解決策は、プログラムで電子メールを送信できる SMTP サーバーが利用可能であることを前提としています。または、ほとんどの Linux ディストリビューションで一般的に利用可能な sendmail のローカル インストールを使用することもできます。

自宅のコンピューターがファイルを保存するディレクトリを監視するスタンドアロンの Java プログラムを作成します。JavaMail APIを使用してファイルを添付し、任意の電子メールに送信します。

Spring Frameworkにも精通している場合は、JavaMail を操作するための優れた抽象化レイヤーがあり、この種のことは簡単です。

于 2008-11-06T00:13:48.947 に答える
0

もちろん、ホーム ISP もおそらく共通の SMTP ポートをブロックしています。

于 2008-12-04T20:21:39.320 に答える