外部SMTPサーバーを使用するようにシステムメールを設定できますか?


72

Linuxボックスにシステムメールを設定して、別のSMTPサーバー経由で送信することは可能ですか?認証を使用しても可能ですか?もしそうなら、どうすればいいですか?

それが不明な場合は、例を挙げましょう。コマンドラインで次のように入力した場合:

cat body.txt | mail -s "just a test" myfriend@hisdomain.com

Gメールのような外部SMTPサーバー経由で送信することは可能ですか?

私は「コマンドラインからGmailからメールを送信する方法」ではなく、特定のSMTPサーバーまたはSMTPサーバー上の1つのアカウントを使用するようにシステム全体を設定するオプションを探しています(送信元アドレスを上書きする可能性があります) 。


実際、これはほとんどのマシンのセットアップ方法でした。特定のMTAを念頭に置いていますか?そうでない場合(「MTAとは」を含む)、どのディストリビューションを実行していますか?
ジル

私はUbuntu 10.04を使用していますが、ssmtpのセットアップに関するこの記事が見つかりましたが、うまくいくようです。ほとんどのマシンのセットアップ方法について詳しく説明できますか?
cwd

回答:


71

sSMTPは非常に使いやすいことがわかりました。

Debianベースのシステムの場合:

apt-get install ssmtp

次に、/ etc / ssmtp / ssmtp.confの構成ファイルを編集します

Gmailを使用して電子メールを送信するためのサンプル構成:

# root is the person who gets all mail for userids < 1000
root=your@email.com

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

:「mail」コマンドがシステムに存在することを確認してください。mailutilsパッケージは、Debianベースのシステムでこれを提供する必要があります。

更新:sSMTPが「スペース」または「#」文字のパスワードを受け入れないことを報告する人々(およびさまざまなLinuxディストリビューションのバグレポート)があります。sSMTPが機能していない場合、これが該当する可能性があります。


2
他の人へのメモとして、ssmtpをインストールしてからmailutilsをインストールする必要があります。mailutilsはssmtpへのメールコマンドとシンボリックリンクを設定するので、通常のmail構文を使用できると思います:)
cwd

1
@cwd Ubuntu 13.04でテスト済み。mailutilsパッケージをインストールする必要はありませんでした(また、自動的にインストールされません)。ssmtpそのまま使用できました。
ピジュスン

私はこれをDebianでBeagleBone Blackで使用することに成功し、最初にmailutilsをインストールする必要がありました。
デイブネルソン14年

Kubuntu 14.04では、ssmtpの後にmailutilsをインストールする必要がありました。しかし、最初の試行ではうまくいきました。
MariusMatutiae

6
ssmtpは、現在のdebian、ubuntu、およびredhatリリース上のリモートサーバーのSSL / TLS証明書を検証せず、証明書のホスト名も検証しません。これは重要な問題です。これにより、暗号化が事実上使用できなくなり、パスワードが平文と同様に送信され、誰でも盗聴できるようになります。ssmtpは少なくとも2009年以降活発に開発されていません。したがって、サーバーの送信メールに使用するメールアカウントのセキュリティを気にする場合は、ssmtpを使用せず、代わりにpostfix(または他の何か)を使用してください:unix.stackexchange.com/ / 72087分の118101
Zulakis

23

以下のための接尾辞

  • 外部メールリレーのIPを/etc/hosts追加し、エイリアスmailrelayを追加します。
  • 後置構成を変更します。

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • 編集 /etc/postfix/smtp_auth

    mailrelay login:password
    
  • ハッシュ形式に変換する

postmap /etc/postfix/smtp_auth

ルートだけがこれを読むことができると言う必要はありません... chmod u=r,og=-


9

mailxは、CLIでのsmtpサーバーの設定をサポートしています...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v foo@baa.com

smtpサーバーで認証されていないメールを送信できる場合は、何もインストールする必要はありません。

Linuxボックスにあるかもしれないソフトウェアのすべてのビットに対してsmtpサーバーを設定する答えはありません。各電子メールクライアントは、SMTPサーバーを構成できます。


必ず受信者の-S var=val に置いてください。
ブノワダッフェズ

認証されていないメールが許可されていない場合はどうすればよいですか?私は、クライアントがMAIL中に匿名のメールを送信するために認証されなかったしまった、
ミアンAsbatアフマド


7

私のお気に入りはメールgithub)クライアントです。それは本当にシンプルで、複雑な設定や依存関係は必要ありません。また、コマンドラインからsmtp-server引数を指定できます。つまり、スクリプト作成に適しています。残念なことに、ほとんどのLinuxディストリビューションにはこのツールが含まれていないため、自分でコンパイルする必要があります。

GitHubのメールプローブからの引用

Q:「メール」とは何ですか?

A:「email」は、コマンドラインを介してリモートsmtpサーバーに電子メールを送信するか、「sendmail」を内部で使用し、GNUPGと完全にやり取りして電子メールを暗号化および署名するように設計したプログラムです。 .. GNUPGはhttp://www.gnupg.orgで入手できます。

この便利なメールクライアントを知らせてくれたcygwinに感謝します。

コンパイルしてインストールする

./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc

電子メールのコマンドラインオプション

$ email --help
Options information is as follows
email [options] recipient1,recipient2,...

    -h, -help module          Print this message or specify one of the below options
    -V, -verbose              Display mailing progress.
    -f, -from-addr            Senders mail address
    -n, -from-name            Senders name
    -b, -blank-mail           Allows you to send a blank email
    -e, -encrypt              Encrypt the e-mail for first recipient before sending
    -s, -subject subject      Subject of message
    -r, -smtp-server server   Specify a temporary SMTP server for sending
    -p, -smtp-port port       Specify the SMTP port to connect to
    -a, -attach file          Attach file and base64 encode
    -c, -conf-file file       Path to non-default configuration file
    -t, -check-config         Simply parse the email.conf file for errors
    -x, -timeout              Set socket timeout.
        -cc email,email,...   Copy recipients
        -bcc email,email,...  Blind Copy recipients
        -sign                 Sign the email with GPG
        -html                 Send message in HTML format ( Make your own HTML! )
        -tls                  Use TLS/SSL
    -m, -smtp-auth type       Set the SMTP AUTH type (plain or login)
    -u, -smtp-user username   Specify your username for SMTP AUTH
    -i, -smtp-pass password   Specify your password for SMTP AUTH
    -g, -gpg-pass             Specify your password for GPG
    -H, -header string        Add header (can be used multiple times)
        -high-priority        Send the email with high priority
        -no-encoding          Don't use UTF-8 encoding

サンプル使用法

SMTPサーバーが指定された単純なメール

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr liuyan@domain.com -smtp-server smtp.domain.com -smtp-port 25 cwd@your-domain.com your-friends@his-domain.com

HTMLメール

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" cwd@your-domain.com

添付ファイル

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach cwd@your-domain.com

2

このページの指示に従ってローカルexim SMTPサーバーをセットアップしますが、Exim構成の最初の画面から「スマートホストから送信されたメール、ローカルメールなし」オプションを選択します。これにより、「mail」または「mailx」コマンドからメールを受信できるSMTPサーバーがボックスに設定され、すべてのメッセージが配信のためにスマートホスト(この場合はGmailサーバー)に転送されます。

Gmailサーバー経由で送信メールを送信するには、簡単ではないEximのTLSサポートを設定する必要があります。このHowtoにはいくつかの説明があり、Gmailに固有の詳細な説明へのリンクがあります。これが機能するようになるまで数時間かかります。Gmailサーバーを介して送信する前に、両側からExim TLS構成をデバッグできるように、ルートアクセスがあるTLS対応SMTPサーバーにボックスから電子メールを送信することから始めることをお勧めします。通信は暗号化されているため、tcpdumpなどのツールを使用して回線上のプロトコルを分析することはできません。


1

ホストとの外部smtpサーバー接続がある場合は、ホストでsmtpを構成し、メールを送信できます。

Linuxの手順でのSMTP設定については、http://kerneltalks.com/config/guide-smtp-configuration-linux/をご覧ください。

電子メールのコマンド例はここにあります:http ://kerneltalks.com/commands/examples-send-email-through-terminal/


回答には、単独で立つのに十分な詳細を含める必要があります。より包括的な情報とリンクを持つことは結構ですが、それは内リンク切れセットの後に役立ちますので、リンクされた材料の少なくとも一部が答えで引用されなければならない。
user4556274
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.