「SSMTP」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(二段階認証に用語を統一)
 
(2人の利用者による、間の5版が非表示)
2行目: 2行目:
 
[[en:SSMTP]]
 
[[en:SSMTP]]
 
SSMTP はローカルコンピュータから設定したメールホスト (メールハブ) にメールを配達するプログラムです。([[sendmail]] などのような機能豊富なメールサーバーと違って) メールサーバーではないのでメールを受信したり、エイリアスを展開したりキューを管理することはできません。SSMTP は主としてマシンから (システムアラートのような) 自動メールを外部のメールアドレスに飛ばすのに使われます。
 
SSMTP はローカルコンピュータから設定したメールホスト (メールハブ) にメールを配達するプログラムです。([[sendmail]] などのような機能豊富なメールサーバーと違って) メールサーバーではないのでメールを受信したり、エイリアスを展開したりキューを管理することはできません。SSMTP は主としてマシンから (システムアラートのような) 自動メールを外部のメールアドレスに飛ばすのに使われます。
  +
  +
ssmtp はメンテナンスが止まっています。[[msmtp]] など別のソフトウェアを使うことを推奨します。
   
 
==インストール==
 
==インストール==
{{Pkg|ssmtp}} パッケージを[[インストール]]してください。
+
{{AUR|ssmtp}} パッケージを[[インストール]]してください。
   
 
==Gmail メールサーバーに転送==
 
==Gmail メールサーバーに転送==
SSMTP を使うには、設定ファイル ({{ic|/etc/ssmtp/ssmtp.conf}}) を編集してアカウント設定を入力する必要があります:
+
SSMTP を使うには、設定ファイル ({{ic|/etc/ssmtp/ssmtp.conf}}) を編集してアカウント設定を入力する必要があります
  +
{{bc|<nowiki>
 
  +
Gmail アカウントで二段階認証を使用している場合、ユニークな [https://support.google.com/mail/answer/185833 アプリパスワード] を生成して {{ic|ssmtp.conf}} に記述する必要があります。[https://security.google.com/settings/security/apppasswords アプリパスワード] のページでパスワードを生成できます。生成された16文字のパスワードは {{ic|AuthPass}} 行に記入してください。パスワードに含まれる空白は無視されます。
  +
  +
{{hc|/etc/ssmtp/ssmtp.conf|<nowiki>
 
# The user that gets all the mails (UID < 1000, usually the admin)
 
# The user that gets all the mails (UID < 1000, usually the admin)
 
root=username@gmail.com
 
root=username@gmail.com
   
 
# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
 
# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
# See also http://mail.google.com/support/bin/answer.py?answer=78799
+
# See also https://support.google.com/mail/answer/78799
 
mailhub=smtp.gmail.com:587
 
mailhub=smtp.gmail.com:587
   
19行目: 24行目:
 
rewriteDomain=gmail.com
 
rewriteDomain=gmail.com
   
  +
# The full hostname. Must be correctly formed, fully qualified domain name or GMail will reject connection.
# The full hostname
 
hostname=localhost
+
hostname=yourlocalhost.yourlocaldomain.tld
   
 
# Use SSL/TLS before starting negotiation
 
# Use SSL/TLS before starting negotiation
29行目: 34行目:
 
AuthUser=username
 
AuthUser=username
 
AuthPass=password
 
AuthPass=password
  +
AuthMethod=LOGIN
   
 
# Email 'From header's can override the default domain?
 
# Email 'From header's can override the default domain?
34行目: 40行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
{{note|上記の設定は Gmail の例であり、適宜設定は変更してください。上手く動作しないときは man ページ {{ic|man 8 ssmtp}} を読みましょう。}}
{{note|Take note, that the shown configuration is an example for Gmail, You may have to use other settings. If it is not working as expected read the man page {{ic|man 8 ssmtp}}, please.}}
 
   
 
ローカルのユーザー名のエイリアスを作成 (任意):
 
ローカルのユーザー名のエイリアスを作成 (任意):
51行目: 57行目:
   
 
==セキュリティ==
 
==セキュリティ==
  +
メールパスワードは平文で {{ic|/etc/ssmtp/ssmtp.conf}} に保存されるため、このファイルを保護するべきです。{{ic|ssmtp.conf}} を保護することで:
Because your email password is stored as cleartext in {{ic|/etc/ssmtp/ssmtp.conf}}, it is important to secure the file.
 
  +
*システムの管理者権限がなければ、ファイルを読み込んでメールパスワードを見ることができなくなります。メールを送信することは変わらずに可能です。
Securing ssmtp.conf will ensure that:
 
  +
*たとえユーザーアカウントがハッキングされたとしても、root アカウントさえ死守すれば、ハッカーは {{ic|ssmtp.conf}} ファイルを読みことができず、メールのパスワードもわかりません。
*if any users have unprivileged access to your system, they cannot read the file and see your email password, while still letting them send out email
 
*if your user account is ever compromised, the hacker cannot read the {{ic|ssmtp.conf}} file, and therefore your email password, unless he gains access to the root account as well
 
   
To secure {{ic|ssmtp.conf}}, do this:
+
{{ic|ssmtp.conf}} を保護するには、以下を実行:
   
 
{{ic|ssmtp}} グループを作成:
 
{{ic|ssmtp}} グループを作成:
64行目: 69行目:
 
# chown :ssmtp /etc/ssmtp/ssmtp.conf
 
# chown :ssmtp /etc/ssmtp/ssmtp.conf
   
  +
''ssmtp'' バイナリのグループ所有者を新しく作った {{ic|ssmtp}} グループに設定:
Set the group owner of the ''ssmtp'' binary to the new {{ic|ssmtp}} group:
 
 
# chown :ssmtp /usr/bin/ssmtp
 
# chown :ssmtp /usr/bin/ssmtp
   
Make sure only root, and the {{ic|ssmtp}} group can access {{ic|ssmtp.conf}}:
+
root {{ic|ssmtp}} グループだけが {{ic|ssmtp.conf}} にアクセスできるように設定:
 
# chmod 640 /etc/ssmtp/ssmtp.conf
 
# chmod 640 /etc/ssmtp/ssmtp.conf
   
  +
''ssmtp'' バイナリの SGID ビットを設定:
Set the SGID bit on the ''ssmtp'' binary.
 
 
# chmod g+s /usr/bin/ssmtp
 
# chmod g+s /usr/bin/ssmtp
   
  +
最後に pacman フックを追加して、パッケージがアップグレードされたときに {{ic|/usr/bin/ssmtp}} のファイルパーミッションを設定するようにします:
Now, all the regular users can still send email using the terminal, but none can read the {{ic|ssmtp.conf}} file.
 
  +
  +
{{hc|/root/bin/ssmtp-set-permissions|
  +
<nowiki>#!/bin/bash
  +
  +
chown :ssmtp /usr/bin/ssmtp
  +
chmod g+s /usr/bin/ssmtp
  +
</nowiki>}}
  +
  +
ファイルに実行可能属性を付与:
  +
# chmod u+x /root/bin/ssmtp-set-permissions
  +
  +
pacman フックを追加:
  +
{{hc|/usr/share/libalpm/hooks/ssmtp-set-permissions.hook|
  +
<nowiki>[Trigger]
  +
Operation = Install
  +
Operation = Upgrade
  +
Type = Package
  +
Target = ssmtp
  +
  +
[Action]
  +
Description = Set ssmtp permissions for security
  +
When = PostTransaction
  +
Exec = /root/bin/set-ssmtp-permissions</nowiki>}}
  +
  +
これで、誰も {{ic|ssmtp.conf}} ファイルを読むことはできなくなりました。
   
 
==メールの送信==
 
==メールの送信==
82行目: 112行目:
 
$ mail username@somedomain.com
 
$ mail username@somedomain.com
   
  +
{{Note|mail コマンドをインタラクティブに使う場合、題名を入力してからエンターを押すことで本文を入力できます。メッセージが作成できたら空行で {{ic|Ctrl}}+{{ic|d}} を押してください。自動的に送信されます。}}
{{Note|When using mail interactively, after typing the Subject and hitting enter, you type the body.
 
Hit {{ic|Ctrl}}+{{ic|d}} on a blank line to end your message and automatically send it out.}}
 
   
  +
テキストファイルを作成して ''ssmtp'' や''mail'' で送信するという方法もあります:
An alternate method for sending emails is to create a text file and send it with ''ssmtp'' or ''mail''
 
 
{{hc|test-mail.txt|To:username@somedomain.com
 
{{hc|test-mail.txt|To:username@somedomain.com
 
From:youraccount@gmail.com
 
From:youraccount@gmail.com
105行目: 134行目:
 
*[http://tombuntu.com/index.php/2008/10/21/sending-email-from-your-system-with-ssmtp/ Sending Email From Your System with sSMTP]
 
*[http://tombuntu.com/index.php/2008/10/21/sending-email-from-your-system-with-ssmtp/ Sending Email From Your System with sSMTP]
 
*[http://www.scottro.net/qnd/qnd-ssmtp.html The Qnd Guide to ssmtp]
 
*[http://www.scottro.net/qnd/qnd-ssmtp.html The Qnd Guide to ssmtp]
*[http://mail.google.com/support/bin/answer.py?answer=78799 GMail Support - Configuring other mail clients]
+
*[https://support.google.com/mail/answer/78799 GMail サポート - 他のメールクライアントの設定]

2024年9月5日 (木) 20:56時点における最新版

SSMTP はローカルコンピュータから設定したメールホスト (メールハブ) にメールを配達するプログラムです。(sendmail などのような機能豊富なメールサーバーと違って) メールサーバーではないのでメールを受信したり、エイリアスを展開したりキューを管理することはできません。SSMTP は主としてマシンから (システムアラートのような) 自動メールを外部のメールアドレスに飛ばすのに使われます。

ssmtp はメンテナンスが止まっています。msmtp など別のソフトウェアを使うことを推奨します。

インストール

ssmtpAUR パッケージをインストールしてください。

Gmail メールサーバーに転送

SSMTP を使うには、設定ファイル (/etc/ssmtp/ssmtp.conf) を編集してアカウント設定を入力する必要があります。

Gmail アカウントで二段階認証を使用している場合、ユニークな アプリパスワード を生成して ssmtp.conf に記述する必要があります。アプリパスワード のページでパスワードを生成できます。生成された16文字のパスワードは AuthPass 行に記入してください。パスワードに含まれる空白は無視されます。

/etc/ssmtp/ssmtp.conf
# The user that gets all the mails (UID < 1000, usually the admin)
root=username@gmail.com

# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
# See also https://support.google.com/mail/answer/78799
mailhub=smtp.gmail.com:587

# The address where the mail appears to come from for user authentication.
rewriteDomain=gmail.com

# The full hostname.  Must be correctly formed, fully qualified domain name or GMail will reject connection.
hostname=yourlocalhost.yourlocaldomain.tld

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
AuthUser=username
AuthPass=password
AuthMethod=LOGIN

# Email 'From header's can override the default domain?
FromLineOverride=yes
ノート: 上記の設定は Gmail の例であり、適宜設定は変更してください。上手く動作しないときは man ページ man 8 ssmtp を読みましょう。

ローカルのユーザー名のエイリアスを作成 (任意):

/etc/ssmtp/revaliases
root:username@gmail.com:smtp.gmail.com:587
mainuser:username@gmail.com:smtp.gmail.com:587

Gmail サーバーに正しくメールを転送できているかテストするには:

$ echo test | mail -v -s "testing ssmtp setup" tousername@somedomain.com

'root' の代わりに 'root at myhost' からメールを受信するには /etc/passwd を編集して 'From' テキストを変更します:

# chfn -f 'root at myhost' root
# chfn -f 'mainuser at myhost' mainuser

これで /etc/passwd が以下のように変更されます:

$ grep myhostname /etc/passwd
root:x:0:0:root@myhostname,,,:/root:/bin/bash
mainuser:x:1000:1000:mainuser@myhostname,,,:/home/mainuser:/bin/bash

セキュリティ

メールパスワードは平文で /etc/ssmtp/ssmtp.conf に保存されるため、このファイルを保護するべきです。ssmtp.conf を保護することで:

  • システムの管理者権限がなければ、ファイルを読み込んでメールパスワードを見ることができなくなります。メールを送信することは変わらずに可能です。
  • たとえユーザーアカウントがハッキングされたとしても、root アカウントさえ死守すれば、ハッカーは ssmtp.conf ファイルを読みことができず、メールのパスワードもわかりません。

ssmtp.conf を保護するには、以下を実行:

ssmtp グループを作成:

# groupadd ssmtp

ssmtp.conf のグループ所有者を新しく作った ssmtp グループに設定:

# chown :ssmtp /etc/ssmtp/ssmtp.conf

ssmtp バイナリのグループ所有者を新しく作った ssmtp グループに設定:

# chown :ssmtp /usr/bin/ssmtp

root と ssmtp グループだけが ssmtp.conf にアクセスできるように設定:

# chmod 640 /etc/ssmtp/ssmtp.conf

ssmtp バイナリの SGID ビットを設定:

# chmod g+s /usr/bin/ssmtp

最後に pacman フックを追加して、パッケージがアップグレードされたときに /usr/bin/ssmtp のファイルパーミッションを設定するようにします:

/root/bin/ssmtp-set-permissions
#!/bin/bash

chown :ssmtp /usr/bin/ssmtp
chmod g+s /usr/bin/ssmtp

ファイルに実行可能属性を付与:

# chmod u+x /root/bin/ssmtp-set-permissions

pacman フックを追加:

/usr/share/libalpm/hooks/ssmtp-set-permissions.hook
[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = ssmtp

[Action]
Description = Set ssmtp permissions for security
When = PostTransaction
Exec = /root/bin/set-ssmtp-permissions

これで、誰も ssmtp.conf ファイルを読むことはできなくなりました。

メールの送信

ターミナルからメールを送信するには、以下を実行:

$ echo "this is the body" | mail -s "Subject" username@somedomain.com

もしくは次を実行することでインタラクティブに送信できます:

$ mail username@somedomain.com
ノート: mail コマンドをインタラクティブに使う場合、題名を入力してからエンターを押すことで本文を入力できます。メッセージが作成できたら空行で Ctrl+d を押してください。自動的に送信されます。

テキストファイルを作成して ssmtpmail で送信するという方法もあります:

test-mail.txt
To:username@somedomain.com
From:youraccount@gmail.com
Subject: Test

This is a test mail.

test-mail.txt ファイルを送信:

$ mail username@somedomain.com < test-mail.txt

添付ファイル

添付ファイルを追加する場合、MuttMsmtp をインストール・設定して nixcraft を見て下さい。

または、uuencode を使って添付することも可能です:

$ uuencode file.txt file.txt | mail user@domain.com

参照