質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
POP

POP(Post Office Protocol)とは、電子メールで使用される受信プロトコル(通信規約)です。SMTPで転送されたメールを一時的に保管し、そのメールをサーバから取り出す際に使用します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

4回答

446閲覧

簡単に軽いpop before smtpみたいな認証の仕組みを作りたい

rgbgy

総合スコア11

POP

POP(Post Office Protocol)とは、電子メールで使用される受信プロトコル(通信規約)です。SMTPで転送されたメールを一時的に保管し、そのメールをサーバから取り出す際に使用します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2018/06/22 16:28

編集2018/06/22 16:57

要件

とにかく軽い
そこそこセキュア
工数をかけない

やりたい事

popの認証を使って、特定の処理を起動する。
メールは見れなくてもいいです。

# 備考
時間かけてもよく、サーバ性能も高いなら、いくらでも選択肢があるのはわかるんですが……

未確認ですが、pop before smtpはそのままrpmがあるっぽいので、
軽いpooサーバがあればいけるのかなと思ってます。

pythonのSimpleHTTPServerみたいので、pop版があれば早かったんですが。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/06/22 16:36

タイトルと、本文のやりたいことが違うのですが、タイトルが間違いと言うことですかね?
rgbgy

2018/06/22 17:00

失礼しました。書きながら考えをまとめていたら、目的が変わってました。タイトルについて修正しました。
guest

回答4

0

何がしたいのか理解できませんが、POP を目的外使用しようとしているのであればやめたほうが良いです。

目的外の用途で使用するということは、本来そのプロトコルが想定していないセキュリティホールを自身で潰す必要が発生します。
これはかなりの工数になりますし、知識が必要です。

目的に沿った認証方式を採用し、その中で設定をポリシーに沿って行うのが、最も工数がかからず、安全に使用する近道です。

投稿2018/06/23 08:14

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rgbgy

2018/07/05 01:49

レスポンスが遅くなり申し訳ないです。 一応pop before smtpという認証方式が過去には世間にもあったので、一応実績有るやり方かと思いまして…… もちろん認証としては弱いですが、目的は「サービス利用のためのスイッチを入れる認証」なので それだけでは何も起きない、といいな……という感じです。
guest

0

nginx の mail proxy機能を使ってpopの認証スクリプトを自作する方法があります。

投稿2018/06/23 04:49

scsi

総合スコア2840

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ssh でも OK なら、ssh ログイン時に 認証が成功すると ~/.ssh/rc か /etc/ssh/sshrc が、実行されますので、それを使うのはどうでしょうか?

root 権限で動かす必要がある場合は、sudo を適切に設定する必要があると思いますが。

https://euske.github.io/openssh-jman/sshd.html 参照

投稿2018/06/23 01:43

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rgbgy

2018/07/05 01:51

sshがポリシーとして使えないんですよね…… it詳しくない人も使えないといけないので、こればかりはなんとも…… 良し悪しは別として。
guest

0

ベストアンサー

媒体として、mailを使うなら、mailの自動化には、procmail というものが昔から定番です。
pop はすでにあるので、問題は、そのあとでは?subject だけのmail をサーバの特定アドレスに送られた時にそのsubjectを使って何かをすることができます。

検証だけがポイントなら、ssh でセキュアなコネクションを作って、socketを待つプログラムで受けるといいと思います。socketを使ったプログラムは、socketのopen を除いて単純なテキスト処理で、socket部分も普通数行で記述できます。その用途には、pop でも勉強素材には面倒すぎると思います。smtpか、もっと単純に、ftp で十分では?

投稿2018/06/22 22:58

gm300

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rgbgy

2018/06/23 00:21 編集

回答ありがとうございます。 メールは使いません。 popの認証を利用したいだけなので、smtpは無くても大丈夫です。 またsmtp(受信)だと認証されないので、prcmail利用は今回の要件に合わないです。 ただsmtp認証とprocmailでも目的は達成できるかもとは思ったので、それは別途検討してみます。 欲しいのは認証部分で、認証できたらそれをトリガーに特定のプログラムを起動したい、というものです。 そのため、ブルートフォースみたいな攻撃は防御できる機能は欲しいかなという感じです。 (iptablesとかでいけるかもですが) プログラミングはほとんどわかってなくて、たぶん一日ネットで調べながらやれば出来るとは思うのですが - 認証の話なので、セキュリティホールを作ってしまいそう - そんなに工数をかけれない という問題があり、踏み切れてない現状です。 理想は自分でやってみたいんですけどね。 (面倒という意味ではなく、そんな人間の作ってものは怖くて使われないという意味で)
rgbgy

2018/06/23 00:16

あー、procmailだとそのユーザによる起動となるかと思うのて、たぶん要件に合わないですかね。 rootで特定の機能を実行する必要があり、他のユーザで実行出来ると困るので。 自己完結すみません。
gm300

2018/06/23 00:32

ssh ならば認証は行われます。認証の目的次第ですが、外部に露出しているサーバならば、pop だけの検証はやめた方がいいです。iptableもたぶん弱すぎます。両方とも特定toolの問題ではなく、方式自体の限界です。 sshを使った場合、ssh -R / -L の機能を使います。 1. ssh が外の世界からの loginを待つ。/ 内部のportをpythonで待つ。 2. login できたら内部のportに中継する。 3. 内部のport で待機していたpythonがその後を引き継ぐ。 という感じにします。sshの部分にプログラミングは不要です。 ポートフォワードという機能で http://www.clear-code.com/blog/2014/9/12.html に "sshコマンドに-R 転送元ポート:転送先ホスト:転送先ポート というオプションを指定すると、SSH接続が維持されている間、接続先サーバから接続元PCへのポートフォワードが行われるようになります。 これを、俗に「トンネルを掘る」と言います。" とあります。認証のすべてはssh 側で行われ、python 側は、その後の処理に集中できます。
rgbgy

2018/06/23 07:28

セキュリティの関係で外部からのsshは受けれません。 これはポリシーの問題なので、認証鍵を利用しようが何しようが回避できません。 該当サーバは不特定の接続元からアクセスを受け付けるため、IPでの制限などは出来ません。 なので最悪パスワードが漏れてもサーバが危機にさらされないpopでやりたい、という理由もあります。 メールは一切持たないので、popなら何も出来ませんから。 たま皆さんの話を見てて、pop3sにしようかなとは思いました。 sshとsslが違うのは理解してました
gm300

2018/06/23 13:08

認証方式としてssl を使っているプログラムは沢山あります。その一番古典的なものが、ssh で、pop3s のs の部分も同様です。 ssh を使えない というのは、port 22 を使えない ということだと思いますが、port forward の場合、待ちport と、forward するport は自由に選ぶことができ、簡単なpop3s の実装は、ssh を使って、port 995 をport 110 にfoward しているだけです。ssh -R 995:localhost:110 みたいな感じですね。 mail を持たないので、pop からは、入り込まれない は間違いです。mail を持っていなくても、user id をどうにかしようとも、入り込まれる可能性は、あります。またパスワード漏えいは、感電といって、クライアント側に割り込まれるすきを与えることになり、より宜しくありません。
rgbgy

2018/07/05 01:46 編集

レスポンスが遅くなり、申し訳ないです。 簡潔に現状を伝えると - pypopperというこの上なくシンプルなpythonのpop serverがあったのてま、それを改修 - 認証はpamを使用 - 応答はプロトコル的に常にエラーを返し、認証が成功しても失敗しても1秒待つ - userとpassコマンド以外はメッセージの出力だけ - ssl化はstunnelを利用 - 起動にはsystemかxinetdを検討 - 大量アクセス対策は検討中(同時接続数を減らし、iptablesで管理する事になりそう) 感電対策ですが、現在のシステムの構造を抜本から抜本から(人側の運用も)変える必要が有るので、 すぐにはなんとかならないのが現状です。 たくさんのご意見ありがとうございました。 せっかくご意見頂いたのに、反映出来なくて申し訳ないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問