「SSMTP」の版間の差分
en:SSMTPへの転送ページ |
Kusanaginoturugi (トーク | 投稿記録) 二段階認証に用語を統一 |
||
| (2人の利用者による、間の6版が非表示) | |||
| 1行目: | 1行目: | ||
[[Category:メールサーバー]] |
|||
#redirect[[en:SSMTP]] |
|||
[[en:SSMTP]] |
|||
SSMTP はローカルコンピュータから設定したメールホスト (メールハブ) にメールを配達するプログラムです。([[sendmail]] などのような機能豊富なメールサーバーと違って) メールサーバーではないのでメールを受信したり、エイリアスを展開したりキューを管理することはできません。SSMTP は主としてマシンから (システムアラートのような) 自動メールを外部のメールアドレスに飛ばすのに使われます。 |
|||
ssmtp はメンテナンスが止まっています。[[msmtp]] など別のソフトウェアを使うことを推奨します。 |
|||
==インストール== |
|||
{{AUR|ssmtp}} パッケージを[[インストール]]してください。 |
|||
==Gmail メールサーバーに転送== |
|||
SSMTP を使うには、設定ファイル ({{ic|/etc/ssmtp/ssmtp.conf}}) を編集してアカウント設定を入力する必要があります。 |
|||
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) |
|||
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 |
|||
</nowiki>}} |
|||
{{note|上記の設定は Gmail の例であり、適宜設定は変更してください。上手く動作しないときは man ページ {{ic|man 8 ssmtp}} を読みましょう。}} |
|||
ローカルのユーザー名のエイリアスを作成 (任意): |
|||
{{hc|/etc/ssmtp/revaliases|root:username@gmail.com:smtp.gmail.com:587 |
|||
mainuser:username@gmail.com:smtp.gmail.com:587}} |
|||
Gmail サーバーに正しくメールを転送できているかテストするには: |
|||
{{bc|<nowiki>$ echo test | mail -v -s "testing ssmtp setup" tousername@somedomain.com</nowiki>}} |
|||
'root' の代わりに 'root at myhost' からメールを受信するには {{ic|/etc/passwd}} を編集して 'From' テキストを変更します: |
|||
{{bc|# chfn -f 'root at myhost' root |
|||
# chfn -f 'mainuser at myhost' mainuser}} |
|||
これで {{ic|/etc/passwd}} が以下のように変更されます: |
|||
{{hc|$ grep myhostname /etc/passwd|root:x:0:0:root@myhostname,,,:/root:/bin/bash |
|||
mainuser:x:1000:1000:mainuser@myhostname,,,:/home/mainuser:/bin/bash}} |
|||
==セキュリティ== |
|||
メールパスワードは平文で {{ic|/etc/ssmtp/ssmtp.conf}} に保存されるため、このファイルを保護するべきです。{{ic|ssmtp.conf}} を保護することで: |
|||
*システムの管理者権限がなければ、ファイルを読み込んでメールパスワードを見ることができなくなります。メールを送信することは変わらずに可能です。 |
|||
*たとえユーザーアカウントがハッキングされたとしても、root アカウントさえ死守すれば、ハッカーは {{ic|ssmtp.conf}} ファイルを読みことができず、メールのパスワードもわかりません。 |
|||
{{ic|ssmtp.conf}} を保護するには、以下を実行: |
|||
{{ic|ssmtp}} グループを作成: |
|||
# groupadd ssmtp |
|||
{{ic|ssmtp.conf}} のグループ所有者を新しく作った {{ic|ssmtp}} グループに設定: |
|||
# chown :ssmtp /etc/ssmtp/ssmtp.conf |
|||
''ssmtp'' バイナリのグループ所有者を新しく作った {{ic|ssmtp}} グループに設定: |
|||
# chown :ssmtp /usr/bin/ssmtp |
|||
root と {{ic|ssmtp}} グループだけが {{ic|ssmtp.conf}} にアクセスできるように設定: |
|||
# chmod 640 /etc/ssmtp/ssmtp.conf |
|||
''ssmtp'' バイナリの SGID ビットを設定: |
|||
# chmod g+s /usr/bin/ssmtp |
|||
最後に pacman フックを追加して、パッケージがアップグレードされたときに {{ic|/usr/bin/ssmtp}} のファイルパーミッションを設定するようにします: |
|||
{{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}} ファイルを読むことはできなくなりました。 |
|||
==メールの送信== |
|||
ターミナルからメールを送信するには、以下を実行: |
|||
$ echo "this is the body" | mail -s "Subject" username@somedomain.com |
|||
もしくは次を実行することでインタラクティブに送信できます: |
|||
$ mail username@somedomain.com |
|||
{{Note|mail コマンドをインタラクティブに使う場合、題名を入力してからエンターを押すことで本文を入力できます。メッセージが作成できたら空行で {{ic|Ctrl}}+{{ic|d}} を押してください。自動的に送信されます。}} |
|||
テキストファイルを作成して ''ssmtp'' や''mail'' で送信するという方法もあります: |
|||
{{hc|test-mail.txt|To:username@somedomain.com |
|||
From:youraccount@gmail.com |
|||
Subject: Test |
|||
This is a test mail.}} |
|||
{{ic|test-mail.txt}} ファイルを送信: |
|||
$ mail username@somedomain.com < test-mail.txt |
|||
===添付ファイル=== |
|||
添付ファイルを追加する場合、[[Mutt]] と [[Msmtp]] をインストール・設定して [http://www.cyberciti.biz/tips/sending-mail-with-attachment.html nixcraft] を見て下さい。 |
|||
または、''uuencode'' を使って添付することも可能です: |
|||
$ uuencode file.txt file.txt | mail user@domain.com |
|||
==参照== |
|||
*[https://bbs.archlinux.org/viewtopic.php?pid=446831 SSMTP and Gmail on the Arch forums] |
|||
*[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] |
|||
*[https://support.google.com/mail/answer/78799 GMail サポート - 他のメールクライアントの設定] |
|||
2024年9月5日 (木) 20:56時点における最新版
SSMTP はローカルコンピュータから設定したメールホスト (メールハブ) にメールを配達するプログラムです。(sendmail などのような機能豊富なメールサーバーと違って) メールサーバーではないのでメールを受信したり、エイリアスを展開したりキューを管理することはできません。SSMTP は主としてマシンから (システムアラートのような) 自動メールを外部のメールアドレスに飛ばすのに使われます。
ssmtp はメンテナンスが止まっています。msmtp など別のソフトウェアを使うことを推奨します。
インストール
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
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
Ctrl+d を押してください。自動的に送信されます。テキストファイルを作成して ssmtp やmail で送信するという方法もあります:
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
添付ファイル
添付ファイルを追加する場合、Mutt と Msmtp をインストール・設定して nixcraft を見て下さい。
または、uuencode を使って添付することも可能です:
$ uuencode file.txt file.txt | mail user@domain.com