目標:ファイルサーバー上のテキストファイルをGmailの受信トレイに入れます。
ファイルサーバーはUbuntuServer 8.04を実行しています。現在、時々SSHで接続し、ログ、ハードドライブのSMART統計など)を確認しています。スケジュールされたスクリプトの設定を検討しています。いくつかのコマンドを実行し、出力を電子メールで送信します。
私が抱えている唯一の問題は、実際にメールを送信することです。私はLinuxでの電子メール構成の経験がなく、sendmailを指すすべてのガイドは、私自身と私の現在の構成に代わって多くのことを想定しているようです。サーバーは、メール、Web、またはDNSサーバーとしてではなく、sambaとファイル共有するように設定されています。メールサーバーを実行したり、サーバーから何かをルーティングしたり、サーバー上で(またはサーバーで)メールを受信したりしたくないのですが、それが目標の達成に役立つ場合を除きます。ファイルサーバーは通常のネットワーク上にあり、インターネットにアクセスできます。
私はいくつかのウェブサイトドメインを所有しています(そしてホスティングパッケージを持っています)。送信サーバーが使用するsmtp.mydotcom.comに入力し、ポートなどを変更してWebサイトのcpanel構成ページの情報と一致させることにより、Webサイトのアカウントの1つを使用してメールを送信するThunderbirdなどのアプリを設定できました。 。ファイルサーバーから外部の電子メールに電子メールを送信できるように、同様のことを行う方法はありますか?
編集:以下のデニスウィリアムソンの答えを読んだ後に私が取った手順は次のとおりです。ほんの数分で稼働しました!
Esmtpをインストールします。
Sudo apt-get install esmtp
Webサイトで新しい電子メールアカウント(「アラート」と呼ばれる)を作成し、/ etc/esmtprcを次のように編集しました。
hostname = mail.mydomain.com:26
username = alerts + mydomain.com
(これらの値はcpanel管理ページによって提供されました)
次に、デフォルトのメールの先頭に「eheader」というファイルを作成しました。
宛先:私<[email protected]>
差出人:アラート<[email protected]>
件名:件名メッセージ本文
したがって、メールを送信するには、次のコマンドを使用できます。
cat eheader <file1> <file2> ... <fileN> |/usr/bin/esmtp -t
したがって、毎日/毎週/などのジョブに送信されるファイルを簡単に変更できます。
そのために、送信専用のMTAである esmtp
を使用します。設定はとても簡単です。 sendmail互換のコマンドラインオプションがあります(一部は無視されます)。それはリポジトリにあります。
簡単な例を次に示します。
echo -e "To: Recipient Name <[email protected]>\n\
From: Me Myself and I <[email protected]>\n\
Subject: Here is the example I promised\n\n\
$(<somefile)" | /usr/bin/esmtp -t
これにより、「somefile」という名前のファイルの内容が送信されます。
非常に単純な構成ファイル/etc/esmtprc
、これには、アップストリームの電子メールプロバイダーのホスト名、ユーザー名、およびパスワードが含まれています(Gmailであると想定しています)。
Gmail用に設定する手順は ここ です。
Ssmtpを調べてください。これは、構成に使用したSMTPサーバーに電子メールを渡すだけのsendmailの代替品です。これはおそらく、プログラムで電子メールを送信する機能を取得できる最も簡単な方法の1つです。 「ssmtp」のウェブ検索は、それを構成する方法についてのたくさんのチュートリアルと指示を思い付くはずです。
また、ほとんどのプログラミング/スクリプト言語ではSMTPライブラリを利用できるため、たとえばPerlやPythonに精通している場合は、SMTPサーバーに接続してメールを送信する小さなスクリプトを作成できます。基本的には次のように作成します。独自のより単純なバージョンのssmtp。
あなたがする必要があるのは、ssmtpやesmtpなどの実際のSMTPサーバー(ネットワーク上またはISP上)に転送するように構成されたUbuntuボックスにSMTPサーバーをセットアップすることです。軽量のもののリストは次のとおりです(muttドキュメント):
http://wiki.mutt.org/?LightSMTPagents
更新:
Ubuntuを実行しているので、Eximがインストールされています。
Sudo dpkg-reconfigure exim4-config
で設定できます。いくつかのドキュメントを読んだら、メールを中継するように設定するのは非常に簡単です。
/更新
以下は、任意のメールクライアントプログラムからGmailを介してメールを送信するためのGmailSMTPサーバー設定です。
最後に、muttのようなコマンドラインメールクライアントを呼び出すスクリプトを記述します(mailやmailxが添付ファイルを作成するとは思わない)。 PerlまたはPythonのメールAPIを使用することもできます。スクリプトは電子メールを作成し、必要なファイルを添付します。
最後に、スクリプトを毎日(または任意の間隔で)実行するために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 を使用してコマンドラインからメールを送信できます
メールを送信したいが、メールサーバーを構成したくない。難しい注文ではありませんが、奇妙です。 Postfixは、数秒で電子メールを送信するように設定できます。MDRAIDコンポーネントの障害の通知など、通常の電子メールをルートに送信すると便利なことがよくあります。
そのシステムで電子メールを設定できない、または設定しない場合、何を残しますか?
サーバーまたはWebホスティングサイトの1つにsshがあり、おそらくメールサービスが既に構成されている場合、サーバーからのログファイルをscpして、メールのあるシステムからメールを送信するcronはどうでしょうか。多くの場合、メールは、mailまたはmailxコマンドを使用してUNIXから送信されます。
mailx -s "the subject line" [email protected] < filetomail.txt
これより前は、レポートしたいものを、実行する必要のあるスクリプトやcpコマンドを使用してそのファイルに入れることができました。うまく機能する場合は、cronをUbuntuサーバーに配置し、2番目のサーバーにsshコマンドを発行して、データをプルダウンしてメールで送信することができます。
私はPerlスクリプトを Mail :: Sendmail で使用して、サーバー(およびステータスの更新についてはNet :: Twitter)からレポートを電子メールで送信します。もちろん、それはあなたがパッケージをmake
しなければならないのでそれの価値がないかもしれないCPANを扱うことを意味します。
!#/usr/bin/Perl
use Mail::Sendmail;
%mail = ( To => '[email protected]',
From => '[email protected]',
Message => "This is a very short message"
);
sendmail(%mail) or die $Mail::Sendmail::error;
print "OK. Log says:\n", $Mail::Sendmail::log;