ãŠãŒã¶ãŒã®ããã¡ãŒã«ãPGPã§æå·åããŠããŠãŒã¶ãŒããµãŒãã¹ã®PGPã§æå·åãããã¡ãŒã«ãéä¿¡ã§ãããšäŸ¿å©ã§ãã
ç¹ã«ã»ãã¥ãªãã£ãæèãã/ãã¯ãããžãŒäŒæ¥ã«ãšã£ãŠãããã¯ãŠããŒã¯ãªæ©èœã§ãã
S / MIMEãµããŒãã®+1
ããŠãã¿ã€ãã«ãå€æŽããŸããã ãã¡ãããäž¡æ¹ãæäŸããã®ãæåã§ãã
X.509æå·åã¡ãŒã«ãéåä¿¡ã§ããããã«ããŠããã ããã°å¹žãã§ãã
ã¯ããX.509眲åãŸãã¯æå·åãããã¡ãŒã«ãéåä¿¡ã§ãããšéåžžã«äŸ¿å©ã§ãã
ãããã£ãŠãX.509æå·åã¡ãŒã«ã¯S / MIMEã¡ãŒã«ã§ãã å人çã«ã¯PGPããã£ãšæ¬²ããã§ããïŒãããæ®åããŠããããïŒããã®åé¡ã¯äž¡æ¹ã®ã·ã¹ãã ã«é¢ä¿ããŠããŸãã ð
æå·åãããéç¥ããŠã£ãã·ã¥ãªã¹ãã«è¿œå ããŸãããããã£ãŠããŠãŒã¶ãŒã¯ããã«å ¬ééµããããã¡ã€ã«ã«è¿œå ã§ããå¿ èŠããããŸãã
åèïŒãã®ãããªæ©èœãåããåªãããã©ã°ã€ã³ãredmineã«ååšããŸãïŒ https ïŒ//github.com/C3S/redmine_openpgp
ãã®gemã¯å®éã«ã¯ç¶æãããŠããªãããã§ãïŒæåŸã®ã³ãããïŒããä»ã«ãè€æ°ãããŸãã å人çã«ã¯ããã®å®ç³ã«ã¯ææ°ã®ã³ãããããããšæããŸãã
ä»æ¥ãæå·åãããŠããªãæ¥ç¶ãä»ããŠéè¡ã®è©³çŽ°ãèŠæ±ããããšãæãŸãªãã£ããããPGPãµããŒããèŠæ±ããæåã®é¡§å®¢èŠæ±ããããŸããã ãã®ãã+1
+1ã
ç§ãã¡ã¯ITSECã³ãã¥ããã£ãšååããŠãããZammadã§ã¯éãããšãã§ããªã倧éã®PGPæå·åã¡ãŒã«ãåä¿¡ããŠââããããããšã¯ã¹ããŒããšåŸ©å·åãè¡ãå¿
èŠããããŸããããã¯ã¯ãŒã¯ãããŒã®å°çã§ãã Zammadã§PGPããã³ããããS / MIMEã¡ãŒã«ããµããŒãããããã®+1 :)
ä»æ¥ãé»åã¡ãŒã«ã®æå·åã¯å¿ é ã§ãã äžè¬ããŒã¿ä¿è·èŠåïŒGDPRïŒã¯ãèšèšããã³ããã©ã«ãã§ãææ°æè¡ã«å¿ãããã©ã€ãã·ãŒãèŠæ±ããŸãã
æè¡çã«ã¯ãããã¯pâ¡pãšã³ãžã³ãçµ±åããããšã§ç°¡åã«è§£æ±ºã§ããå¯èœæ§ããããŸãïŒéåžžã«ç°¡åãªãã©ã€ãã·ãŒïŒã
+1
æå·åãããã¡ãŒã«ãåãåãããšããããããŸãã æå·åããããã±ããããšã¯ã¹ããŒãããŠæåã§åŸ©å·åããã®ã¯é¢åã§ããããã±ããã·ã¹ãã ãä»ããŠãã±ããã«å¿çããããšããã§ããŸããã
+1
PGP / GPGããªããšãOTRSããZammadã«ç§»è¡ã§ããŸããã ç§ã®å€ãOTRSã«ã¯gnupgã§æå·åããããã±ããããããããããŸãã
+1
顧客ã奪ãããã«ç§ãã¡ã®é»åã¡ãŒã«ãåœé ããéåžžã«éãäºä»¶ã®åŸã GnuPGã¯ãã¹ãŠã®éä¿¡ãã±ããé»åã¡ãŒã«ã«çœ²åããããšæããŸãã
PePã¯ãPGPæå·åã®ããã®ç°¡åã§äœ¿ãããããœãªã¥ãŒã·ã§ã³ã§ãããããçµ±åã§ããå¯èœæ§ããããŸãã
ãŸãã眲åå ¥ãã®ã¡ãŒã«ãéä¿¡ããã®ãçŽ æŽãããæ©èœã ãšæããŸãã ããã«ãããåä¿¡è ã¯ãã¢ãã¬ã¹ãæ¬ç©ã§ãããä¿¡é Œã§ãããšããããçšåºŠã®ä¿¡é ŒãåŸãããšãã§ããŸãã
次ã®ã¹ãããã¯ãã¡ãã»ãŒãžãå®å šã«æå·åããããšã§ãã
@martini @monotek瀟å ã§ãããã®GPGéšåã«åãçµãããšãèããŠããŸãã ããŒãžããå ŽåããããããŒãžããããšã«å¶éã¯ãããŸããïŒ èŠããããŸãã¯å¿ èŠãªæ©èœã¯ãããŸããïŒ
ããã«ã¡ã¯@ luto-ããã§ããïŒ ããŒãžã«å¿ èŠãªãã®ã¯æ¬¡ã®ãšããã§ãã
gpgCLIãã€ããªã«APIãæäŸããRubygemã«ã€ããŠã¯ãã§ã«èª¬æããŸããã ç§ãèŠããŠããéãããããã®ã©ããæ¬åœã«ææã«èŠããŸããã§ããã ããã¯éèŠãªãã€ã³ãã§ãããããç¶æ/å質ã®äŸåé¢ä¿ã®ã¿ã«äŸåããããã«ããŠãã ããã
ã«ã¹ã¿ã å®è£
ã¯å¯èœã§ãããæ¡åŒµæ§ãšã¡ã³ããã³ã¹ã念é ã«çœ®ããŠãã ããã ã¢ãžã¥ãŒã«ã«ãã¹ãŠã®ããžãã¯ãé
眮ããã®ã§ã¯ãªãããã®ããã®libã¯ã©ã¹ãäœæããŸãã åäžè²¬ä»»ã®ååãå°éããŸãã
æ©èœã«ã¯ãã¡ãŒã«ã®éåä¿¡ã®çœ²åãæ€èšŒãããã³æå·å/埩å·åã®ãã¹ãŠã®ããªãšãŒã·ã§ã³ãå«ãŸããŠããå¿
èŠããããŸãð€
çä¿¡ã¡ãã»ãŒãžã®åŠçã¯ãä»ã®ã³ã³ããŒãã³ãã§ã³ã³ãã³ãã«ã¢ã¯ã»ã¹ã§ããããã«ãã§ããã ãæ©ãå®è¡ããå¿
èŠããããŸãã
éä¿¡ã¡ãã»ãŒãžã®åŠçã¯ãä»ã®ã³ã³ããŒãã³ãã®ã³ã³ãã³ãã«ã¢ã¯ã»ã¹ã§ããããã«ãã§ããã ãé
ãå®è¡ããå¿
èŠããããŸãã
å ¬ééµãšç§å¯éµã管çããããã®åªãã管çã€ã³ã¿ãŒãã§ãŒã¹ãå¿ èŠã§ãã
ãäžæãªç¹ãããããŸãããã support @ zammad.comãŸã§ãæ°è»œã«ãåãåããããã ãããµããŒããåããŠãã ããã ç§ãã¡ã¯ããªããåãã§åãåããŸãðªZammadã®æ¹æ³ã§ãã£ãŠã¿ãŸãããð
ãŸãããã®ãããªã³ãã¥ãã±ãŒã·ã§ã³ãå¿ èŠãšããæåã®é¡§å®¢ãç²åŸããã®ã§ãç§ãããã«æ祚ããŸãã ãã§ã«é²å±ã¯ãããŸããïŒ ããŒã¿çã®ãã¹ããæäŒãããã§ãã
@martinseenerafaikããã¯ZammadããŒã ã®ããŒããããã«ã¯ãããŸããã çŸåšããããç¬èªã«å®è£ ããããšãèšç»ããŠããŸãã ãããããåžæã®å Žåã¯ãããè¿ éã«åŠçããã客æ§ã«ãµãŒãã¹ãæäŸã§ããããã«ãç§ã®githubãããã¡ã€ã«ã®ã¡ãŒã«ã¢ãã¬ã¹ãããæ°è»œã«ãé£çµ¡ãã ããã
@thorsteneckelç§ã¯çŸåšã2ã€ã®éšåã§ã¡ãŒã«ãåä¿¡ããããã®å®è£ ã®ãããã¿ã€ããäœæããŠããŸãã
Postmaster::PreFilter
ã®ã¡ãŒã«ã埩å·åããïŒåŸ©å·åãããã¡ãã»ãŒãžãã³ã³ãã³ããšããŠèšå®ããŸãã ãªãªãžãã«ãæšãŠã; 䜿çšãã埩å·åããŒãã¡ã¿ããŒã¿ã«ä¿åããPostmaster::PostFilter
ã§GpgCryptoInfo
ãªããžã§ã¯ããäœæãããããArticle
ã«ã¢ã¿ããããŸã; 䜿çšæžã¿ã®åŸ©å·åããŒã眲åã¹ããŒã¿ã¹ãªã©ã®æ
å ±ãæ°žç¶çã«ä¿åããŸãããã€ãã®è³ªåïŒ
Channel::EmailParser
ã«ããŒãã³ãŒãã£ã³ã°ããå¿
èŠããããŸããïŒPostmaster::PreFilter
ãµãã¹ã¯ã©ã€ããŒã¯ããŸããïŒ ãã®å ŽåãããŒãã³ãŒããããå®è£
ãŸãã¯Postmaster::EarlyPreFilter
ãå¿
èŠã§ãããŸããäžè¬çãªè³ªåïŒ EmailParser
ãŸãã¯ãã£ã«ã¿ãŒã¯ãã¡ãŒã«ã_decrypt_ããã®ã«æé©ãªå Žæã®ããã§ãã ããããæå·åããããã®ãå®ç§ãªãå Žæãæãã€ãããšãã§ããŸããïŒ
ãã®åé¡ãå®è£ ã«é¢ãã質åãããã®ã«é©åãªå Žæã§ããããšãé¡ã£ãŠããŸãã ããã§ãªãå Žåã¯ãå¥ã®ãã§ããã°å ¬éãããŠãããã®ãæããŠãã ãã:)ããããšãïŒ
ããã«ã¡ã¯@ luto-ç§ã¯çŸåšããã«ã€ããŠã®ç§ã®èããæžãçããŠããŸãã ããªã倧ãããŠéèŠãªãããã¯ãªã®ã§ãå°ãæéãããããŸãã ç§ã¯é±æ«ãŸã§ã«ãããæãéããããšããŸãã ããã£ãŠãããŠããããšãã
å°ããªæŽæ°ïŒ Postmaster::PreFilter
ãã£ã«ã¿ãŒã泚æãããŠããŸãã ç§ã¯çŸåšIdentifySender
ã®çŽåŸã«é
眮ããŠããã®ã§ãã©ã®gpgããŒãè©Šãã¹ãããããããŸãã ãããç¥ã£ãŠãããšããã£ã«ã¿ãŒã¯ç§ã«ãšã£ãŠåŸ©å·åããã®ã«é©åãªå Žæã®ããã§ãã
@thorsteneckelãæéãå²ããŠããã ãããããšãããããŸãïŒ ããªãã®æžã蟌ã¿ã楜ãã¿ã«ããŠããŸãã :)
ããã«ã¡ã¯@luto ããããèããŠããããã§ãïŒ ããªããææ¡ããããã«ãç§ã¯ãã®åé¡ã§èª¿æŽãããã®ã奜ãã§ãã ãã®ãããééçã«ãªããå
±ææ
å ±ãæè¡ææžã«åå©çšã§ããŸãã ãã®åé¡ã¯ããã©ãŒã¯ã®äœæ¥ãã©ã³ãã§åç
§ã§ããããã§åç
§ãããŸãã å€æŽãå®äºãããããã«ãªã¯ãšã¹ããäœæããŠãã ããã ãããŸã§ã®éãç§ã¯ããªãã®ãã©ã³ãããã§ãã¯ããŠãå€æŽã確èªããŸãã
S / MIMEæ©èœã¯çŸåšå®è£
ããªããããå¥ã®åé¡ã«ç§»åããå¿
èŠããããŸãã
ããªãã®è³ªåã«ã€ããŠïŒããªãã¯å®å šã«æ£ããéãé²ãã§ããŸãã ç§ã¯ããã€ãã®ããšãæžãçããŠãéäžã§ããªãã®è³ªåã«çããŸãã
ç§ãã¡ã®çµéšã§ã¯ããã¹ãé§åéçºïŒRSpecã䜿çšïŒã¯ãã®çš®ã®ã¿ã¹ã¯ã«æé©ã§ãã ã©ã®ããã«ã¢ãããŒããããã¯ããªã次第ã§ãããæ©èœã®ããã®å
æ¬çãªãã¹ãã¹ã€ãŒãã絶察ã«å¿
èŠã«ãªããŸãã ãããã£ãŠããã¹ãã容æã«ããå¯èœãªéãæåã®æ¹æ³ã§ãµããŒãããããã«ãRSpecãã«ããŒãæäŸããŸãã æ°æ¥äžã«develop
ãã©ã³ãã«è¿œå ããŸãã ãã®ãã©ã³ãã¯ç§ãã¡ã®äœæ¥ãã©ã³ãã§ããããããããŒã¹ãšããŠäœ¿çšããå¿
èŠããããŸãã å°æ¥çã«ã¯ãã¹ã¿ãŒã«ããŒãžãããå®å®çã«çœ®ãæããããŸãã
Postmaster::PreFilter
ã¯é©åãªå Žæã§ãã ãã£ã«ã¿ç»é²ã®ååã®çªå·ãã¬ãã£ãã¯ã¹ã«ãã£ãŠãå®è¡æéã«åœ±é¿ãäžããããšãã§ããŸãã å°ããæ°å€ã¯æ©ãå®è¡ãããŸãã
ãã§ã«åæåãããŠããã·ã¹ãã ã®å Žåãèšå®ãè¿œå ãã移è¡ãå¿
èŠã§ãã
app/models/channel/filter/decrypt.rb
ã®ãããªååãææ¡ããŸãããæçµçã«ã¯ããªã次第ã§ãã
ç»é²ãå®äºãããšãZammadã¯åä¿¡ã¡ãŒã«ããšã«ãã£ã«ã¿ãŒãå®è¡ããŸãã
ãã®æç¹ã§ã¯PGPã®ã¿ãå®è£ ãããããåŸã§S / MIMEãè¿œå ããããã®é害ãè¿œå ããªãããã«ããå¿ èŠããããŸãã ããã«ãå°æ¥çã«ã¯ãé»åã¡ãŒã«ã®ã¿ä»¥å€ã®ãã£ãã«ã§PGPããµããŒãããå¿ èŠããããããããŸããã ããã念é ã«çœ®ããŠãããšãèšèšããããã¯ãšã³ããšAPIã®ãã¹ããšçµ±åãç°¡åã«ãªããŸãã ç§ã®ææ¡ã«ç¶ããŠïŒè°è«ã®ããã«éããŠããŸãïŒïŒ
lib/pgp_message.rb
ãã¡ã€ã«ã«PgpMessage
ãšããã¯ã©ã¹ãããã¯ãã§ãã ãã®ã¯ã©ã¹ã¯ãïŒããããïŒæå·åãããã¡ãã»ãŒãžæåå/ã¡ãŒã«ã³ã³ãã³ãã«ãªãå¿
é ã®åŒæ°ã1ã€åããŸãã äŸïŒ
instance = PgpMessage.new(email_content)
ã€ã³ã¹ã¿ã³ã¹ã¯æ¬¡ã®ã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããå¿ èŠããããŸãã
æ£çŽãªãšãããäŸåé¢ä¿ãšããŠæã£ãŠãããå®ç³ã¯èŠã€ãããŸããã§ããã ãããã¯ãã¹ãŠãä¿å®ãããŠããªããè€éã«èŠããããæ¡åŒµæ©èœã®Cã³ã³ãã€ã«ãå¿ èŠã§ãã PGP CLIã«ã¢ã¯ã»ã¹ã§ããªãå Žåã¯ãè©ŠããŠã¿ã䟡å€ããããããããŸããã ã©ãæããŸããïŒ
次ã«ãPgpMessageã¯ã©ã¹ãPostmaster::PreFilter
ã§äœ¿çšããŠãã€ã³ã¹ã¿ã³ã¹ãåæåããã¡ãã»ãŒãžã®é¢é£æ§ã確èªã§ããŸãã PGPæå·åã¡ãã»ãŒãžã®å Žåã¯ãä»ã®æ¹æ³ã䜿çšããŠå¿
èŠãªããŒã¿ãæœåºããæå®ãããmail
ããã·ã¥ã®body
ãšattachments
ã®ã³ã³ãã³ããäžæžãããããšãã§ããŸãã
ããã«ã x-zammad-article-preferences
ããããŒãèšå®ããŠäœæãããèšäºã«ãããã€ãã®ã¡ã¿æ
å ±ïŒæ¢ã«è¿°ã¹ãããã«ïŒãä¿åããå¿
èŠããããŸãã
mail[:'x-zammad-article-preferences']['decryption_key'] = instance.key
...
次ã®ã¡ã¿ããŒã¿ã§ååã ãšæããŸãã
PgpMessageã¯ã©ã¹ã¯ã次ã®çµã¿åãããšçä¿¡PGPã¡ãã»ãŒãžã®ããªãšãŒã·ã§ã³ãïŒå°ãªããšãïŒïŒåŠçã§ããå¿ èŠããããŸãã
ãã§ã«ååãªãµã³ãã«ã¡ãŒã«ããããŸããïŒ
å°æ¥ç°¡åã«æ¡åŒµã§ããããŸããŸãªã±ãŒã¹ãã«ããŒããããã«ããã¹ãã±ãŒã¹ã®å æ¬çãªãªã¹ããçšæããå¿ èŠããããŸãã
Zammadã¯HTMLã¡ãŒã«ã®éä¿¡ã®ã¿ããµããŒãããŠããããã detached
PGPã¡ãŒã«ã®éä¿¡ã®ã¿ãã«ããŒããå¿
èŠããããŸãã
Zammadãç¹å®ã®å±æ§ããé»åã¡ãŒã«ãäœæããå Žæã¯ã self.build
ã¡ãœããã®app/models/channel/email_build.rb
ã«ãããŸãã ãããæ¡åŒµããŠã PgpMessage
ã¯ã©ã¹ã䜿çšããŠãæå®ãããbody
å±æ§ãæã€ã€ã³ã¹ã¿ã³ã¹ãäœæãã encrypted
ããã³signed
ã¡ãœããã䜿çšããŠæå·åãããPGPãäœæããå¿
èŠããããŸã眲åãããæ¬æã®ã³ã³ãã³ããšæ·»ä»ãã¡ã€ã«ã
ãããè¡ãã«ã¯ãåä¿¡è
ã®é»åã¡ãŒã«ã¢ãã¬ã¹ã®å
¬ééµãæ€çŽ¢ããå¿
èŠããããŸãã ãŠãŒã¶ãŒãèªåã®ããŒãïŒãããã¡ã€ã«ã«ïŒä¿åããæ¹æ³ã¯ãŸã æ確ã§ã¯ãããŸããã ããã«ã€ããŠã¯ç€Ÿå
ã§è©±ãåãããç¥ããããŸãã
PGPãæ§æãããåä¿¡è ãããããµããŒãããåŸã¯ãæå·åãããŠããªãã¡ãŒã«ãéä¿¡ãããªãã·ã§ã³ã¯ãªãã¯ãã ãšæããŸãã ãããæ確ã«ããå¿ èŠããããŸããããããŸã§ã¯ãããé²ãã¹ãéã§ãã
ããã¯ã³ã¢æ©èœããåé¢ããå¿ èŠããããåŸã§èª¬æããŸãã ããã«ã€ããŠã¯ç§ãã¡ã®ãµããŒããå¿ èŠã ãšæããŸãã 瀟å ã§è©±ãåããã¢ãããŒãæ¹æ³ããç¥ããããŸãã
ããã§ååã§ãããæ£ããæ¹åãæããŠããã¯ãã§ãã ãããããä»ã®ã±ãŒã¹ãå調æŽããŠã«ããŒããªããã°ãªããªãããã€ãã®å Žæã«å°éããŸãããæåã«ããããçºçãããŸãã
ãäžæãªç¹ãããããŸãããããæ°è»œã«ãåãåãããã ããã
ç§ã¯ããªãã®å€æŽãèŠãŠã¬ãã¥ãŒããã®ã楜ãã¿ã«ããŠããŸãð€
ããªãã®ãµããŒãã«æè¬ããŸãð
Thorsten
æ£çŽãªãšãããäŸåé¢ä¿ãšããŠæã£ãŠãããå®ç³ã¯èŠã€ãããŸããã§ããã ãããã¯ãã¹ãŠãä¿å®ãããŠããªããè€éã«èŠããããæ¡åŒµæ©èœã®Cã³ã³ãã€ã«ãå¿ èŠã§ãã PGP CLIã«ã¢ã¯ã»ã¹ã§ããªãå Žåã¯ãè©ŠããŠã¿ã䟡å€ããããããããŸããã ã©ãæããŸããïŒ
PGP CLIã¯å®å®ããŠããªããããGPGã«ãããšãAPIãšããŠäœ¿çšããªãã§ãã ããã ç§ã¯ãããŸã§ruby-gpgmeã®äœ¿çšã«æåããŠããã®ã§ããããä»ã®ãšããç§ããã©ãããã«ãŒãã§ãã ç§ã®ç¥ãéããGPGã«ã¯APIããªããCã¬ãã«ã®ã©ã€ãã©ãªãããªãããšãèãããšãCæ¡åŒµæ©èœããªããšããŸããããªããšæããŸããããããrubyã§ã®GPGã®åå®è£ ãé€ããŠãäœãç¥ããŸããã
æ確ã«ããŠãããŠããããšãã ç§ã¯ãããç¥ããŸããã§ããã ãã®æç§ã«ã¯ããã§ããã 圌ãã®ãã«ãã倱æããŠããã®ã¯å°ãå¿é ã§ãããç§ã¯ãããèŠãŠãããŸãã
ã¡ãã£ãšãããïŒ åã«èª¬æããããã«ããã®åé¡ã¯PGPæ©èœã®èŠæ±ãšããŠå§ãŸããŸããã åŸã§S / MIMEãè¿œå ããŸããã ãã ããã©ã¡ããç¬ç«ããŠå®è£ ãããç°ãªããã¯ãããžã§ãããããS / MIMEèŠä»¶ãæ°ããåé¡ïŒ1961ã«ç§»åããããšã«ããŸããã é²æç¶æ³ã«èå³ãããå Žåã¯ããã¡ãã§ãæ°è»œã«ãç»é²ãã ããã 課é¡è¿œè·¡ã·ã¹ãã ã®ãã€ãºãé¿ããããã«ãã³ãã¥ããã£ããŒãã§è©±ãåããè¡ãå¿ èŠããããŸãã ããããšãïŒ
ãããã£ãŠããã¹ãã容æã«ããå¯èœãªéãæåã®æ¹æ³ã§ãµããŒãããããã«ãRSpecãã«ããŒãæäŸããŸãã ç¿æ¥ãéçºãã©ã³ãã«è¿œå ããŸãã
@thorsteneckelã¯ããããŸã äžéžãããŸããããããŠãããããªããããã¯æ£ç¢ºã«ã©ãã«ãããŸããïŒ :)
@ luto-é 延ããŠç³ãèš³ãããŸãã-ããã«ãããŸãïŒ https ïŒ//github.com/zammad/zammad/commit/f2bf4cbd029bbfdc79888c188d2a29d1ebc5f27d
*filter_filename*_spec.rb
ãspec/models/channel/filter/
ã«é
眮ããå¿
èŠããããŸãïŒ models/channel/filter/follow_up_merged.rb
ã®å Žåãšåæ§ã«ããã£ã«ã¿ãŒã¯ã©ã¹åã®åŸã«, type: :channel_filter
ãè¿œå ããŸãã
ãã®åŸã2ã€ã®ãã«ããŒãå©çšã§ããŸãã
filter_parsed(mail_string)
ïŒ
https://github.com/zammad/zammad/blob/f2bf4cbd029bbfdc79888c188d2a29d1ebc5f27d/spec/support/channel_filter.rb#L17 -L27
ããã³filter(parsed_mail_hash)
ïŒ
https://github.com/zammad/zammad/blob/f2bf4cbd029bbfdc79888c188d2a29d1ebc5f27d/spec/support/channel_filter.rb#L3 -L13
ååä»ããã©ã¡ãŒã¿ãŒchannel
ã¯ãªãã·ã§ã³ã§ããããã®å Žåã¯å¿
èŠãããŸããã
ããããšãïŒ
åèãŸã§ã«ïŒãã©ã³ãã¯çŸåšç§ãã¡ã®ãã©ãŒã¯ã«äœãã§ããŸãã ç§ãè¡ãã«ã€ããŠãã³ãããã®ããããã«ã€ããŠæ°è»œã«ã³ã¡ã³ãããŠãã ããã ããã«ãããé¢ä¿è
å
šå¡ãæçµã¬ãã¥ãŒãç°¡åãã€çãããããšãã§ããŸã:)
ããã«ã¡ã¯@ luto-ããªãããã®ãããªããŒã¹ã§ããã«åãçµãã§ããã®ãèŠãã®ã¯çŽ æŽãããããšã§ãã ã³ãŒããrubocopã§ãã§ãã¯ãããããã«èŠããªãããšã«æ°ã¥ããŸããã rubocopãšcoffeelintã䜿çšããŠãäž¡æ¹ã®çš®é¡ã®ãã¡ã€ã«ã®Zammadã¹ã¿ã€ã«ã¬ã€ãã確èªããŸãã ãã§ãã¯ãèªåçã«å®è¡ãããå Žåã¯ãäºåã³ããããã£ã«ã¿ãŒæ§æãå©çšã§ããŸãã ããã«ã€ããŠãã£ãšæ å ±ãæäŸã§ãããã©ããæããŠãã ããã
ããã確ãã«ã pre-commit install
ãšããã«å¯Ÿå¿ãããšãã£ã¿ãŒã®æ¡åŒµæ©èœã䜿çšããŠããã¯ãã€ã³ã¹ããŒã«ããŸããã ã€ã³ãã³ãã¯filter-branch
ãä»ããŠä¿®æ£ããããããå±¥æŽã¯ããèŠæ ããããŸãã ä»ã®ãã¹ãŠã®éåã¯æäœæ¥ã§ä¿®æ£ãããŸããã èŠå®ã¯ä»ã»ãšãã©å¹žãã§ã:)
ã³ãŒãã«pythonismãå«ãŸããŠããããšã«æ°ä»ããããããŸããã ç§ã¯ã§ããéãã«ããŒã®ããæ¹ããšãã¥ã¬ãŒãããããšããŠããŸãããç§ã¯ãŸã Pythonã®äººã§ã;ïŒéã«æããå Žåã¯ãææããŠãã ããã Rubocopã¯ãããã®ããªãã®æ°ãæãŸããŸããïŒsweat_smileïŒ
è¯ãïŒ rubocopæ§æãšäžèŽããªãå€æŽãå°ãªããšã1ã€é©çšãããŠããããšã«æ°ã¥ããŸãããè² ã®if
ã®ä»£ããã«unless
ã䜿çšããŠããŸãã ã§ããããããªãã®ã«ãã³ããã¯ããã§å€ãã®ããšãããŠããããã§ãã
ãããpythonismsã¯ç§ã«ãšã£ãŠã¯åé¡ãããŸããã ãããŸã§ã®ãšããæå¥ã¯ãããŸããð€
ããã«ã¡ã¯@ luto-éçºã®çŸåšã®ç¶æ ã確èªãããã£ãã®ã§ããã24æ¥ä»¥éã³ãããããªãããšã«æ°ã¥ããŸããã äœãç§ã«ã§ããããšã¯ãããŸããïŒ
äœãç§ã«ã§ããããšã¯ãããŸããïŒ
ä»ã®å
éšãããžã§ã¯ãã®ä¿®æ£ïŒwink ïŒïŒ grinïŒ
Zammadã®ç¯å²å
ã«ãããã«ãŒã¯ãªããäžè¬çãªæéã®äžè¶³ã ãã§ãã ããã«é¢ããäœæ¥ã¯æ¥é±ãç¶ç¶ããå¿
èŠããããŸãã
@thorsteneckelç§ã¯ã¡ãã£ãšã²ã£ããã£ãã GpgïŒãŸãã¯å°ãªããšãgpgmeïŒã¯ãã»ãšãã©ã®å Žåããé»åã¡ãŒã«ã¯æå·åãããŠããŸããã埩å·åã§ããŸããããšãé»åã¡ãŒã«ã¯æå·åãããŠããããã¹ãŠåé¡ãããŸããããåºå¥ããŸããã ãã®åäœã¯ãåã«æŠèª¬ããencrypted?
ããã³decryptable?
ã¡ãœãããšäºææ§ããããŸããã çŸåšãæå·åãããŠããã埩å·åã§ããªãã¡ãŒã«ãæ€åºããããã®ããã¯ãããã€ããããŸããããã¹ãŠã®å Žåã«æ©èœãããããšã¯ã§ããŸããã
UIã§åŸ©å·åå¯èœãšæå·åãåºå¥ããªãããšã«ã€ããŠã©ãæããŸããïŒ GPGã¡ãã»ãŒãžããããŒã®æ¬ èœãªã©ã®æãããªå Žåãé€ããŠãofcã
Zammadã§ã®å®è£ ãšçµ±åã¯ãã€æåŸ ã§ããŸããïŒ å®è£ ã¯ç¹å®ã®ãªãªãŒã¹ã§èšç»ãããŠããŸããïŒ
é£çµ¡ãã£ãïŒ
ãã®ãã©ã°ã€ã³ã®éçºãé²ããããšãã§ãã人ã¯ãä»ã®ããšãèããŠããããã«æããŸããããã®åé¡ã«é¢ããè¿ä¿¡ã確èªããŠããŸãã
ããã«ã€ããŠåœŒãã®æ³šæãåŒãããå Žåã¯ã圌ãã«é»åã¡ãŒã«ãæžãããšãã§ããŸãïŒ [email protected]ç§ã¯ãã§ã«ãããããŸãã-ãŸãã¯åœŒãã«å奜çãªãã€ãŒã@ubernautenãéã£ãŠãã ãã
@hatscheré ããŠãã¿ãŸããã @ 0xErnieãæšæž¬ããããã«ãç§ã¯çŸåšä»ã«ããã¹ãããšããããŸããããã®æ©èœã¯ãŸã ç§ãã¡ã®ã¬ãŒããŒã«ãããŸãã ç§ã¯çŸåšãZammadãIncãããŒã ã®äžéšãšããŠã§ã¯ãªããå€éšã®èšç«ãªãã§ãã®ãœãã«åãçµãã§ããããšã«æ³šæããŠãã ããã ãããã£ãŠãããã«ã¯ãã°ããæéããããå ŽåããããŸãã
ãããã«ãŒã«é¢ããŠã¯ãããã§éããŠãã@thorsteneckelã«é¢ãã1ã€ã®è³ªåãšãããã®UIã³ã³ããŒãã³ãã«ã©ã®ããã«åãçµããã«ã€ããŠã®ãã©ã€ããŒããªè³ªåããããŸãã ãããåé²ãããããã«ãããã€ã³ãããå Žåã¯ã@ hatscherãŸã§ãæ°è»œã«åœŒã«é£çµ¡ããŠãã ããã ããããäž»ãªé害ã¯ç§ã®æéã®äžè¶³ã§ãã
è¿ä¿¡ãé ããªã£ãŠãã¿ãŸãããç¹ã«@lutoã«ïŒ ç§ã¯ããã«çŸåšå¿ èŠãªæéãšæ³šæãæãããšãã§ããŸããã ãããã2é±é以å ã«å¯ŸåŠããäºå®ã§ãã
é£çµ¡ãã£ãïŒ ãã®æ©èœãå¿ èŠã§ã...
@hatscherç§ãã¡ã®å€ãã¯ãããå¿ èŠãšããŠããŸã:)ããããçµå±ã®ãšãããæ©èœïŒ@lutoïŒã«åãçµãã§ãããã¹ãŠã®äººãèªçºçã«ãããè¡ããŸã:)ãããæ¬åœã«åæ¥çã«å¿ èŠãªå Žåã¯ãå¯ä»ïŒçå°ãŸãã¯ä»äºã®ããããïŒãé転ã«åœ¹ç«ã€ãšæããŸãé²æç¶æ³ã転éããŸãã æ®å¿µãªããç§ã«ã¯è²¢ç®ããæéããªãã®ã§ãç§ã«æ®ãããŠããã®ã¯åžæãšå¿èã ãã§ãïŒP
è²¢ç®ã«ã€ããŠè©±ãïŒä»ã®äººãè²¢ç®ã§ãããšæãããåå ã§ããããã«ãçŸåšã®éçºç¶æ³ãPRãšããŠæåºããã®ã¯ã©ãã§ããïŒ
ã«ããŒãšäžè¬ã®äž¡æ¹ã§ã®GPG-APIã®æ²ããç¶æ ãèãããšãæ°ããGPGrustã®å®è£ ã¯äžèŠã®äŸ¡å€ããããããããŸããã
äžç²ã®å¡©ã§ïŒ
ãã³ãã£ã³ã°ãéããªãç»å ŽïŒ
PGPãšS / MIMEã®çµ±åã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ ãã®æ©èœãç·æ¥ã«å¿ èŠãªã®ã§ãå¯ä»ãããããšæããŸãã
ä»åŸã®ããŒãžã§ã³ã§èšç»ãããŠããæ©èœã®ãªã¹ãã¯å®éã«ãããŸããïŒ
ããã«ã¡ã¯@hatscher ã
ãŸããS / MIMEãå¿
èŠã§ãããã³ã¹ãã«ã€ããŠZammadãšè©±ãåã£ãŠããŸãã çµ±åã®ã³ã¹ããåæ
ã§ããããã«ããäºãã«è©±ãåãããã§ããïŒ ãã¶ãç§ã«ã¡ãŒã«ãéã£ãŠãã ããïŒå§ã¯deïŒã
ã¡ãŒã«ã¯éäžã§ã;-)
çŸåšããã®æ©èœã«è³éãæäŸããŠãããä»ã®äººãæ¢ããŠããŸãïŒãããããããã±ãŒãžãšããŠã®S / MIMEæå·åãšäžç·ã«ïŒã lastname .deã®ç§ã®ãã©ã¢ããŒã ã«èå³ãããå Žåã¯ãç§ã«é£çµ¡ããŠãã ããã è²»çšãåæ ã§ããããã«ãåãã§ãã人ãäœäººãããã確èªããŸãã
@martinseenerãã®æ©èœã®è³éã確ä¿ããããšãããšã®ããšã§ãããããæããŸãã é²æç¶æ³ãçŽé¢ããåé¡ã«ã€ããŠæããŠãã ããã PGPãµããŒãã¯çŸåšãZammadãžã®ç§»è¡ã«é¢ãã決å®ãäžããŠããããŸãã¯ç Žã£ãŠããŸãããã®ãããæŽå¯ãããã ããã°å¹žãã§ãã
ç³ãèš³ãããŸããããçŸæç¹ã§ã¯ããã®ãããã¯ã«é¢ããæ
å ±ãå
±æããããšã¯ã§ããŸããã
Zammad-Coreã«äœãã移åããããããã«å¿ããŠãã®åé¡ãæŽæ°ããŸãã
æ°ãæã®å¿çæéãšãã®åé¡ã«é¢ãã以åã®è°è«ãèŠããšãZammadã«PGPãµããŒããè¿œå ããããšã¯ããªãã«ãšã£ãŠåªå äºé ã§ã¯ãªããããŸã£ããèµ·ãããªããšçµè«ä»ããŠããŸãã ïŒå°æ¥ãã£ãŠæ¥ãŠãè°è«å šäœãèªã¿ãããªã人ã®ããã«ãããã«èŠçŽããŠãã ãããïŒ
ãã@ rixx-ãã®éãã§ãã çŸåšãåªå ã¹ããŒãã«åºã¥ããŠã¿ã¹ã¯ã«åãçµãã§ããŸãã
1äœïŒãµããŒã/ã«ã¹ã¿ã éçº
ãããã¯ãZammadã«è³éãæäŸããŠãã人ã
ãšç§ãã¡ããªãªãŒã¹ããæ©èœã§ãã Zammadã¯ããããããªããã°ä»æ¥ããã«ããªãã£ãã§ãããã ããããæã€ããšã¯ç§ãã¡ã«ãšã£ãŠæ¬åœã«å€§ããªæå³ããããç§ãã¡ãæ£ããè»éã«ä¹ã£ãŠããããšã奚å±ããŸãã
2çªç®ïŒ80ïŒ
ã®æ©èœ/åé¡
ã客æ§ã®ãµããŒãããåŸãããæãªæéã¯ã100ïŒ
補åã«è²»ãããŠããŸãã ãŠãŒã¶ãŒããŒã¹ã®ãã¹ãŠã®ãŠãŒã¶ãŒã«å¯ŸããŠçããå
¬å¹³ã§ããããšãéèŠã§ãã ãã ãã詳现ã«ãªããšããã«ãäžæ¹ã®åœäºè
ãä»æ¹ã®åœäºè
ãããåªå
ããŠè¡ãå¿
èŠã®ãã決å®ããŸããŸãå¢ããŸãã ãããã£ãŠããŠãŒã¶ãŒããŒã¹ã®80ïŒ
ã«åœ±é¿ãäžããŠããæ©èœãšåé¡ã«ã®ã¿åãçµãã§ããŸãã ãã®ããã«ããŠããŠãŒã¶ãŒããŒã¹ã®å€§éšåããå°å
¥ããå€æŽãã確å®ã«å©çãåŸãããšãã§ããŸãã
3çªç®ïŒå人çãªèå³
ããZammadã§ã¯ã誰ããå人çã«èå³ã®ããã¿ã¹ã¯ã«èªç±ã«æéãè²»ããããšãã§ããŸãã ããäžåºŠèŠãŠã¿ããšãè³éæäŸãŸãã¯æãé¢é£æ§ã®é«ãå€æŽã®ã«ããŽãªã«åé¡ãããªãåé¡ã質åã«å¯Ÿå¿ããŠããããšãããããŸãã ããã¯ãç§ãã¡ãå®éã«äººã
ãæ°é£ããå©ããããšã楜ããã§ããããã§ãã ãã ããçŸåšã空ãæéã¯éåžžã«éãããŠããããããããã¯ã»ãšãã©ã®å Žåå°ããªã¿ã¹ã¯ã§ããæ®å¿µãªããã
ããã§ãããã¯ã«æ»ããŸããPGPã¯çŸåšãäžèšã®ã©ã®ã«ããŽãªã«ã該åœããŸããã ã ãããããçŸåšç§ãã¡ã«ãšã£ãŠåªå
床ã¯é«ããªããšèšã£ãŠããã®ã¯ããªãã®èšããšããã§ãã ãã ããPGPã¯ãŸã£ããçºçããªããšèšã£ãŠããã®ã¯ééãã§ãã PGPã¯ç§ãã¡ã«ãšã£ãŠæ¯èŒçé«ãåªå
é äœãæã£ãŠãããå®éã«ã¯ãæãé¢é£æ§ã®é«ãå€æŽã®ã¿ãå«ãå
¬éããŒããããã®å
éšãã©ããã«ãããŸãã
ãããã£ãŠãPGPã®ææã¯ãŸã æ¥ãŠããŸãããã確å®ã«æ¥ãã§ãããã åªå
é äœã¹ããŒãã«å¿ããŠ-é
ããæ©ããã
ç§ãããªãã®èŠçŽããæ¬ èœããŠããã®ã¯ãPGPéçºãå®éã«@lutoã«ããã³ãã¥ããã£ã®åãçµã¿ãšããŠç§ãã¡ã®ãµããŒãã§ãã§ã«éå§ãããŠãããšããäºå®ã§ãïŒ @lutoã«æè¬ããŸãïŒïŒã æ®å¿µãªãããåªå
é äœãå€ãããå€æŽã¯çŸåšå€ããªã£ãŠããŸãã ããããç©äºãæŸãäžããŠäœæ¥ãç¶ããç¥èãšèœåãæã£ãŠãã人ã¯èª°ã§ã確å®ã«ãµããŒããããŸãïŒ
æå·åéä¿¡ã®å šäœçãªãããã¯ã«é¢å¿ã®ãã人ã«ã¯ãã¥ãŒã¹ããããŸããbarzahlen.deã®@martinseenerã®åšãã®å倧ãªäººã ããS / MIMEéä¿¡ïŒïŒ1961ïŒã®éçºã«è³éãæäŸããŸãããããã¯ãŸããªãéå§ãããŸãã
ãã®è°è«ãæ·±ããããè²¢ç®ãããããããšã«èå³ãããå Žåã¯ãé æ ®ãªãã¹ã¬ãããéãããã³ãã¥ããã£ããŒãã§ç§ãPMããŠããã®åé¡ã話é¡ã«ããŠãã ããã
ãS / MIMEéä¿¡ãã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ
質åããå¿ èŠãããå Žåã¯ãå°ãªããšãé©åãªå Žæã䜿çšããŠãã ããïŒ https ïŒ//github.com/zammad/zammad/issues/1961
ç³ãèš³ãããŸããããéå»æ°ãæéã«ãã£ãŒãããã¯ãæ¬ èœããŠããããããã®åé¡ãå¯çš¿è
ã®ã¿ã«éå®ããŠããŸãã
ããã¯ãã€ãºãæžããããã§ãããåââé¡ã«éäžããã®ã«åœ¹ç«ã¡ãŸãã
ããã«é¢ããæŽæ°ãããå Žåã¯ãããã«å¿ããŠãã®åé¡ãæŽæ°ããŸãã
ïŒ1961ã§ãæ°ã¥ããããããŸããããS / MIMEãµããŒããè¿œå ããZammadã®æ¬¡ã®ããŒãžã§ã³3.4ã§ãªãªãŒã¹ããŸãðbarzahlen.deã®@martinseenerã«ã¹ãã³ãµãŒããŠãããŠããããå¯èœã«ããŠãããŠããããšãð
æ®å¿µãªãããPGPãµããŒããè¿œå ããããã«å¿
èŠãªãªãœãŒã¹ããŸã ãããŸããã ç§ãã¡ã¯ããã€ãã®ããšããã¹ãããããšãèããŠããŸãããããŸã ãã£ã³ã¹ããããŸããã§ããã ãã®ãããããã§ç°¡åãªæŽæ°ãæäŸããããšæããŸãã
ãã ããS / MIMEçµ±åã¯ãå®å
šãªã¡ãŒãªã³ã°ãåŠçããããã®ã»ãŒå®å
šãªããã¬ãŒã ã¯ãŒã¯ããšãçµ±å/æ§ç¯ã®æ¹æ³ã«é¢ããåªãããªãã¡ã¬ã³ã¹å®è£
ãæäŸããŸãã Uberspaceãã©ãŒã¯ã§@lutoã«ãã£ãŠè¡ãããçŽ æŽãããåæäœæ¥ããŸã ãããŸãã 誰ãããã£ã³ã¹ãã€ããããšãããšããªããªããç§ãã¡ã¯ã§ããéãã®ããšãåãã§ãæäŒãããŸãã ã³ãã¥ããã£ããŒãã§ã¹ã¬ãããéããŠãç§ã«èšåããŠãã ããã
æ°ããæ å ±ãå©çšå¯èœã«ãªããšãç§ãã¡ã¯ããªããææ°ã®ç¶æ ã«ä¿ã¡ãŸã-çŽæãããâïž
æãåèã«ãªãã³ã¡ã³ã
@hatscherç§ãã¡ã®å€ãã¯ãããå¿ èŠãšããŠããŸã:)ããããçµå±ã®ãšãããæ©èœïŒ@lutoïŒã«åãçµãã§ãããã¹ãŠã®äººãèªçºçã«ãããè¡ããŸã:)ãããæ¬åœã«åæ¥çã«å¿ èŠãªå Žåã¯ãå¯ä»ïŒçå°ãŸãã¯ä»äºã®ããããïŒãé転ã«åœ¹ç«ã€ãšæããŸãé²æç¶æ³ã転éããŸãã æ®å¿µãªããç§ã«ã¯è²¢ç®ããæéããªãã®ã§ãç§ã«æ®ãããŠããã®ã¯åžæãšå¿èã ãã§ãïŒP
è²¢ç®ã«ã€ããŠè©±ãïŒä»ã®äººãè²¢ç®ã§ãããšæãããåå ã§ããããã«ãçŸåšã®éçºç¶æ³ãPRãšããŠæåºããã®ã¯ã©ãã§ããïŒ