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

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

ただいまの
回答率

90.86%

  • Linux

    3364questions

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

  • POP

    15questions

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

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

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 169

rgbgy

score 3

 要件

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

 やりたい事

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

 備考

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • otn

    2018/06/23 01:36

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

    キャンセル

  • rgbgy

    2018/06/23 02:00

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

    キャンセル

回答 4

+2

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/05 10:49

    レスポンスが遅くなり申し訳ないです。

    一応pop before smtpという認証方式が過去には世間にもあったので、一応実績有るやり方かと思いまして……

    もちろん認証としては弱いですが、目的は「サービス利用のためのスイッチを入れる認証」なので
    それだけでは何も起きない、といいな……という感じです。

    キャンセル

checkベストアンサー

+1

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/23 09:12 編集

    回答ありがとうございます。

    メールは使いません。
    popの認証を利用したいだけなので、smtpは無くても大丈夫です。
    またsmtp(受信)だと認証されないので、prcmail利用は今回の要件に合わないです。
    ただsmtp認証とprocmailでも目的は達成できるかもとは思ったので、それは別途検討してみます。

    欲しいのは認証部分で、認証できたらそれをトリガーに特定のプログラムを起動したい、というものです。

    そのため、ブルートフォースみたいな攻撃は防御できる機能は欲しいかなという感じです。
    (iptablesとかでいけるかもですが)


    プログラミングはほとんどわかってなくて、たぶん一日ネットで調べながらやれば出来るとは思うのですが
    - 認証の話なので、セキュリティホールを作ってしまいそう
    - そんなに工数をかけれない
    という問題があり、踏み切れてない現状です。
    理想は自分でやってみたいんですけどね。
    (面倒という意味ではなく、そんな人間の作ってものは怖くて使われないという意味で)

    キャンセル

  • 2018/06/23 09:16

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

    キャンセル

  • 2018/06/23 09: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 側は、その後の処理に集中できます。

    キャンセル

  • 2018/06/23 16:28

    セキュリティの関係で外部からのsshは受けれません。
    これはポリシーの問題なので、認証鍵を利用しようが何しようが回避できません。

    該当サーバは不特定の接続元からアクセスを受け付けるため、IPでの制限などは出来ません。
    なので最悪パスワードが漏れてもサーバが危機にさらされないpopでやりたい、という理由もあります。
    メールは一切持たないので、popなら何も出来ませんから。

    たま皆さんの話を見てて、pop3sにしようかなとは思いました。
    sshとsslが違うのは理解してました

    キャンセル

  • 2018/06/23 22: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 をどうにかしようとも、入り込まれる可能性は、あります。またパスワード漏えいは、感電といって、クライアント側に割り込まれるすきを与えることになり、より宜しくありません。

    キャンセル

  • 2018/07/05 10:45 編集

    レスポンスが遅くなり、申し訳ないです。

    簡潔に現状を伝えると
    - pypopperというこの上なくシンプルなpythonのpop serverがあったのてま、それを改修
    - 認証はpamを使用
    - 応答はプロトコル的に常にエラーを返し、認証が成功しても失敗しても1秒待つ
    - userとpassコマンド以外はメッセージの出力だけ
    - ssl化はstunnelを利用
    - 起動にはsystemかxinetdを検討
    - 大量アクセス対策は検討中(同時接続数を減らし、iptablesで管理する事になりそう)


    感電対策ですが、現在のシステムの構造を抜本から抜本から(人側の運用も)変える必要が有るので、
    すぐにはなんとかならないのが現状です。

    たくさんのご意見ありがとうございました。
    せっかくご意見頂いたのに、反映出来なくて申し訳ないです。

    キャンセル

+1

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/05 10:51

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

    キャンセル

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3364questions

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

  • POP

    15questions

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