Zammad: PGP

์— ๋งŒ๋“  2016๋…„ 10์›” 19์ผ  ยท  58์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: zammad/zammad

์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค PGP๋กœ ์•”ํ˜ธํ™”๋œ ๋ฉ”์ผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š” ๋ฉ”์ผ์„ PGP๋กœ ์•”ํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํŠนํžˆ ๋ณด์•ˆ ์ธ์‹/๊ธฐ์ˆ  ํšŒ์‚ฌ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

feature backlog mail processing

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@hatscher ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ํ•„์š”๋กœํ•ฉ๋‹ˆ๋‹ค :) ๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ๊ตญ ๊ธฐ๋Šฅ์„ ์ž‘์—…ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค (@luto)์ด ์ž๋ฐœ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค :) ์‹ค์ œ๋กœ ์ƒ์—…์  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ธฐ๋ถ€ (๋ˆ์ด๋‚˜ ์ผ)๊ฐ€ ์šด์ „์— ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๊ธฐ์—ฌํ•  ์‹œ๊ฐ„์ด ์—†์œผ๋ฏ€๋กœ ๋‚จ์€ ๊ฒƒ์€ ํฌ๋ง๊ณผ ์ธ๋‚ด๋ฟ์ž…๋‹ˆ๋‹ค :P

๊ธฐ์—ฌ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ: ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ˜„์žฌ ๊ฐœ๋ฐœ ์ƒํƒœ๋ฅผ PR๋กœ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  58 ๋Œ“๊ธ€

+1 S/MIME ์ง€์›

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

X.509 ์•”ํ˜ธํ™” ๋ฉ”์ผ์„ ๋ณด๋‚ด๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ˆ, X.509 ์„œ๋ช…๋˜๊ฑฐ๋‚˜ ์•”ํ˜ธํ™”๋œ ๋ฉ”์ผ์„ ๋ณด๋‚ด๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋งค์šฐ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ X.509 ์•”ํ˜ธํ™” ๋ฉ”์ผ์€ S/MIME ๋ฉ”์ผ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ PGP๋ฅผ ๋” ์›ํ•˜์ง€๋งŒ(๋˜ํ•œ ๋” ๋„๋ฆฌ ํผ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—), ์ด ๋ฌธ์ œ๋Š” ๋‘ ์‹œ์Šคํ…œ ๋ชจ๋‘์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜ƒ

์œ„์‹œ๋ฆฌ์ŠคํŠธ์— ์•”ํ˜ธํ™”๋œ ์•Œ๋ฆผ์„ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๋Š” ํ”„๋กœํ•„์— ๊ณต๊ฐœ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ๋ฉ‹์ง„ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด redmine์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค: https://github.com/C3S/redmine_openpgp

์ด ๋ณด์„์€ ์‹ค์ œ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ(๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹) ๋‹ค๋ฅธ ๋ณด์„ ์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์Šต๋‹ˆ๋‹ค . ๊ฐœ์ธ์ ์œผ๋กœ ์ด ๋ณด์„ ์— ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ปค๋ฐ‹์ด ์žˆ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์€ํ–‰ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— PGP ์ง€์›์„ ์š”์ฒญํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๊ณ ๊ฐ ์š”์ฒญ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ +1

+1.
์šฐ๋ฆฌ๋Š” IT SEC ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ํ˜‘๋ ฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ Zammad์—์„œ ์—ด ์ˆ˜ ์—†๋Š” ์ˆ˜๋งŽ์€ PGP ์•”ํ˜ธํ™” ๋ฉ”์ผ์„ ์ˆ˜์‹ ํ•˜๋ฏ€๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฐ ์•”ํ˜ธ ํ•ด๋…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์›Œํฌํ”Œ๋กœ๊ฐ€ ์ง€์˜ฅ์ž…๋‹ˆ๋‹ค. +1 PGP ๋ฐ Zammad์˜ S/MIME ๋ฉ”์ผ ์ง€์›:

์š”์ฆ˜์€ ์ด๋ฉ”์ผ ์•”ํ˜ธํ™”๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ ๊ทœ์ •(GDPR)์€ ์„ค๊ณ„ ๋ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ์‹  ๊ธฐ์ˆ ์— ๋”ฐ๋ฅธ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์ ์œผ๋กœ ์ด๊ฒƒ์€ pโ‰กp ์—”์ง„ ์„ ํ†ตํ•ฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋งค์šฐ ์‰ฌ์šด ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ).

+1
์šฐ๋ฆฌ๋Š” ์ข…์ข… ์•”ํ˜ธํ™”๋œ ๋ฉ”์ผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”๋œ ํ‹ฐ์ผ“์„ ๋‚ด๋ณด๋‚ด๊ณ  ์ˆ˜๋™์œผ๋กœ ํ•ด๋…ํ•˜๋Š” ๊ฒƒ์€ ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ  ํ‹ฐ์ผ“ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ํ‹ฐ์ผ“์— ์‘๋‹ตํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค.

+1
PGP/GPG๊ฐ€ ์—†์œผ๋ฉด OTRS์—์„œ Zammad๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ „ OTRS์— gnup์„ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋œ ํ‹ฐ์ผ“์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

+1

์šฐ๋ฆฌ๋Š” ๊ณ ๊ฐ์„ ๊ฐ•ํƒˆํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฉ”์ผ์„ ์œ„์กฐํ•œ ๋งค์šฐ ์ถ”์•…ํ•œ ์‚ฌ๋ก€๊ฐ€ ์žˆ์€ ํ›„ ๋ชจ๋“  ๋ฐœ์‹  ํ‹ฐ์ผ“ ์ด๋ฉ”์ผ์— GnuPG์— ์„œ๋ช… ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

PeP ๋Š” PGP ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•œ ์‰ฝ๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์ด๋ฏ€๋กœ ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ช…๋œ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ๋„ ์ข‹์€ ๊ธฐ๋Šฅ์ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ˆ˜์‹ ์ž์—๊ฒŒ ์ฃผ์†Œ๊ฐ€ ์‹ค์ œ์ด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์–ด๋Š ์ •๋„์˜ ํ™•์‹ ์„ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์™„์ „ํžˆ ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@martini @monotek ์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ์˜ GPG ๋ถ€๋ถ„์„ ์ž์ฒด์ ์œผ๋กœ ์‚ฌ๋‚ด์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉํ•  ๊ฒฝ์šฐ ์ œํ•œ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ณด๊ณ  ์‹ถ๊ฑฐ๋‚˜ ํ•„์š”๋กœ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @luto - ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ๋ณ‘ํ•ฉ์— ํ•„์š”ํ•œ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ…Œ์ŠคํŠธ, ๊ฐ€๊ธ‰์ ์ด๋ฉด RSpec
  • ์„ ์  ์„œ๋ฅ˜ ๋น„์น˜
  • ์ฝ”๋“œ API ๋ฌธ์„œ
  • rubocop ๋ฐ coffeelint ๊ตฌ์„ฑ์„ ํ†ตํ•œ QAd ์ฝ”๋“œ

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ gpg CLI ๋ฐ”์ด๋„ˆ๋ฆฌ์— API๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ Ruby gem์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ํ•œ ๊ทธ๋“ค ์ค‘ ๋ˆ„๊ตฌ๋„ ์ •๋ง๋กœ ์œ ๋งํ•ด ๋ณด์ด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ค‘์š”ํ•œ ์ง€์ ์ด๋ฏ€๋กœ ์œ ์ง€/ํ’ˆ์งˆ ์ข…์†์„ฑ์—๋งŒ ์˜์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์—ผ๋‘์— ๋‘์‹ญ์‹œ์˜ค. ๋ชจ๋“  ๋กœ์ง์„ ๋ชจ๋“ˆ์— ๋„ฃ์ง€ ๋ง๊ณ  lib ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค. ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์กด์ค‘ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ์—๋Š” ๋ฉ”์ผ ์†ก์ˆ˜์‹ ์˜ ์„œ๋ช…, ํ™•์ธ ๋ฐ ์•”ํ˜ธํ™”/์•”ํ˜ธ ํ•ด๋…์˜ ๋ชจ๋“  ๋ณ€ํ˜•์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿค“
๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์ฝ˜ํ…์ธ ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์‹  ๋ฉ”์‹œ์ง€๋ฅผ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ฝ˜ํ…์ธ ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ๋‚˜๊ฐ€๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ตœ๋Œ€ํ•œ ๋Šฆ๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ณต๊ฐœ ํ‚ค์™€ ๊ฐœ์ธ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ‹์ง„ ๊ด€๋ฆฌ์ž ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ๋ฉด ์–ธ์ œ๋“ ์ง€ [email protected] ์œผ๋กœ ๋ฌธ์˜ํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์ง€์›์„ ๋ฐ›์œผ์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์˜ ์ƒํ’ˆ์„ ๋ฐ›๊ฒŒ ๋˜์–ด ๋”์šฑ ๊ธฐ์ฉ๋‹ˆ๋‹ค ๐Ÿ’ช ์ž๋งˆ๋“œ ๋ฐฉ์‹์œผ๋กœ ํ•ฉ์‹œ๋‹ค ๐ŸŽ

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๊ทธ๋Ÿฌํ•œ ์˜์‚ฌ ์†Œํ†ต์„ ํ•„์š”๋กœํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๊ณ ๊ฐ์„ ์–ป์—ˆ์œผ๋ฏ€๋กœ์ด ๊ณ ๊ฐ์—๊ฒŒ๋„ ํˆฌํ‘œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ์—๋„ ๋„์›€์ด ๋˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@martinseener faik ์ด๊ฒƒ์€ Zammad ํŒ€์˜ ๋กœ๋“œ๋งต์— ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ์ด๊ฒƒ์„ ์ž์ฒด์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๋” ๋นจ๋ฆฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ณ ๊ฐ์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ์นฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‚ด github ํ”„๋กœํ•„์— ์žˆ๋Š” ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์ž์œ ๋กญ๊ฒŒ ์—ฐ๋ฝํ•˜์„ธ์š”.

@thorsteneckel ์ €๋Š” ํ˜„์žฌ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋ฉ”์ผ์„ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌํ˜„์„ ํ”„๋กœํ† ํƒ€์ดํ•‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Postmaster::PreFilter ์— ์žˆ๋Š” ๋ฉ”์ผ์„ ๋ณตํ˜ธํ™”: ๋ณตํ˜ธํ™”๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๋‚ด์šฉ์œผ๋กœ ์„ค์ •; ์›๋ณธ์„ ๋ฒ„๋ฆฌ์‹ญ์‹œ์˜ค. ์‚ฌ์šฉ๋œ ์•”ํ˜ธ ํ•ด๋… ํ‚ค๋ฅผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ €์žฅ
  2. Postmaster::PostFilter ์—์„œ GpgCryptoInfo ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  Article ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋œ ์•”ํ˜ธ ํ•ด๋… ํ‚ค ๋ฐ ์„œ๋ช… ์ƒํƒœ์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ

๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ:

  • ์ด ํ•„ํ„ฐ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด Channel::EmailParser ๋กœ ํ•˜๋“œ์ฝ”๋”ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
  • ํ•ด๋…๋œ ๋ฉ”์‹œ์ง€ ์ฝ˜ํ…์ธ ์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๋Š” Postmaster::PreFilter ๊ตฌ๋…์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๊ตฌํ˜„ ๋˜๋Š” Postmaster::EarlyPreFilter ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™”/์„œ๋ช…/์ธ์ฆ์— ์‚ฌ์šฉํ•œ ํ‚ค์™€ ์ˆ˜์‹ ํ•œ ๋ฉ”์ผ์˜ ์„œ๋ช… ์ƒํƒœ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์˜๊ตฌ์ ์œผ๋กœ ๋ณด๊ด€ํ•˜๊ณ  ์‹ถ์€ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ์ผ๋ฐ˜์ ์ธ ์งˆ๋ฌธ: EmailParser ๋˜๋Š” ํ•„ํ„ฐ๊ฐ€ ๋ฉ”์ผ์„ _ํ•ด๋…_ํ•  ์ˆ˜ ์žˆ๋Š” ์™„๋ฒฝํ•œ ์žฅ์†Œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”ํ•  "์™„๋ฒฝํ•œ" ์žฅ์†Œ๋ฅผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๊ฐ€ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์งˆ๋ฌธ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์žฅ์†Œ์ด๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ, ๊ฐ€๊ธ‰์ ์ด๋ฉด ๊ณต๊ฐœ ๋Œ€์ƒ์„ ๊ฐ€๋ฆฌ์ผœ ์ฃผ์„ธ์š”. :) ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š” @luto - ์ €๋Š” ํ˜„์žฌ ์ด์— ๋Œ€ํ•œ ์ œ ์ƒ๊ฐ์„ ์ ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์†Œ ํฌ๊ณ  ์ค‘์š”ํ•œ ์ฃผ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ฒˆ์ฃผ๋ง๊นŒ์ง€ ๋๋‚ด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ดํ•ดํ•ด ์ค˜์„œ ๊ณ ๋งˆ์›Œ.

์†Œ๊ทœ๋ชจ ์—…๋ฐ์ดํŠธ: Postmaster::PreFilter ํ•„ํ„ฐ๊ฐ€ ์ฃผ๋ฌธ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ˜„์žฌ IdentifySender ๋ฐ”๋กœ ๋’ค์— ๋‚ด ๊ฒƒ์„ ๋ฐฐ์น˜ํ•˜์—ฌ ์‹œ๋„ํ•  gpg ํ‚ค๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ํ•„ํ„ฐ๊ฐ€ ๋‚˜๋ฅผ ์œ„ํ•ด ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์žฅ์†Œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@thorsteneckel ์‹œ๊ฐ„ ๋‚ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ท€ํ•˜์˜ ์ž‘์„ฑ์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. :)

์•ˆ๋…•ํ•˜์„ธ์š” @luto๋‹˜ , ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค! ๋‚˜๋Š” ๋‹น์‹ ์ด ์ œ์•ˆํ•œ ๋Œ€๋กœ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์กฐ์ •์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํˆฌ๋ช…ํ•  ๊ฒƒ์ด๋ฉฐ ๊ธฐ์ˆ  ๋ฌธ์„œ์— ๊ณต์œ ๋œ ์ •๋ณด๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌํฌ์˜ ์ž‘์—… ๋ถ„๊ธฐ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์—์„œ ์ฐธ์กฐ๋ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์ด ์™„๋ฃŒ๋œ ํ›„ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”. ๊ทธ๋™์•ˆ ๊ท€ํ•˜์˜ ์ง€์ ์„ ํ™•์ธํ•˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ง€๊ธˆ์€ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— S/MIME ๊ธฐ๋Šฅ์„ ๋ณ„๋„์˜ ๋ฌธ์ œ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๊ด€ํ•˜์—ฌ: ๋‹น์‹ ์€ ์™„์ „ํžˆ ์˜ฌ๋ฐ”๋ฅธ ๊ธธ์„ ๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Š” ๊ธธ์— ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ ๊ณ  ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ๊ฐœ๋ฐœ

์šฐ๋ฆฌ์˜ ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(RSpec ์‚ฌ์šฉ)์€ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์ž‘์—…์— ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ ‘๊ทผ ๋ฐฉ์‹์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์ง€๋งŒ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ํ…Œ์ŠคํŠธ ์ œํ’ˆ๊ตฐ์ด ํ™•์‹คํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ณ  ์ตœ์„ ์„ ๋‹คํ•ด ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด RSpec ๋„์šฐ๋ฏธ๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‚ ์— develop ๊ด„ํ˜ธ์— ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ„๊ธฐ๋„ ์ž‘์—… ๋ถ„๊ธฐ์ด๋ฏ€๋กœ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉ๋˜์–ด ํ–ฅํ›„ ์•ˆ์ •์ ์œผ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.

Postmaster::PreFilter

Postmaster::PreFilter s๋Š” ์˜ฌ๋ฐ”๋ฅธ ์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ํ•„ํ„ฐ ๋“ฑ๋ก ์ด๋ฆ„์— ์žˆ๋Š” ์ˆซ์ž ์ ‘๋‘์‚ฌ๋กœ ์‹คํ–‰ ์‹œ๊ฐ„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ฎ์€ ์ˆซ์ž๋Š” ๋” ์ผ์ฐ ์‹คํ–‰ ๋ฉ๋‹ˆ๋‹ค.
์ด๋ฏธ ์ดˆ๊ธฐํ™”๋œ ์‹œ์Šคํ…œ ์˜ ๊ฒฝ์šฐ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค .
๋‚˜๋Š” app/models/channel/filter/decrypt.rb ์™€ ๊ฐ™์€ ์ด๋ฆ„์„ ์ œ์•ˆํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๊ฒฐ๊ตญ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

๋“ฑ๋ก์ด ์™„๋ฃŒ๋˜๋ฉด Zammad๋Š” ๊ฐ ์ˆ˜์‹  ๋ฉ”์ผ์— ๋Œ€ํ•ด ํ•„ํ„ฐ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

PGP ๋ฉ”์‹œ์ง€ ํด๋ž˜์Šค

์ด ์‹œ์ ์—์„œ PGP๋งŒ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— S/MIME์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์žฅ์• ๋ฌผ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ–ฅํ›„์—๋Š” ์ด๋ฉ”์ผ ์ „์šฉ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์ฑ„๋„์—์„œ PGP๋ฅผ ์ง€์›ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์—ผ๋‘์— ๋‘๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฑ์—”๋“œ์™€ API๊ฐ€ ํ…Œ์ŠคํŠธ ๋ฐ ํ†ตํ•ฉํ•˜๊ธฐ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ œ์•ˆ์— ๋”ฐ๋ผ(ํ† ๋ก ์„ ์œ„ํ•ด ์—ด๋ ค ์žˆ์Œ):

lib/pgp_message.rb ํŒŒ์ผ์— PgpMessage ๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค๋Š” (์•„๋งˆ๋„) ์•”ํ˜ธํ™”๋œ ๋ฉ”์‹œ์ง€ ๋ฌธ์ž์—ด/๋ฉ”์ผ ๋‚ด์šฉ์ด ๋  ํ•˜๋‚˜์˜ ํ•„์ˆ˜ ์ธ์ˆ˜๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

instance = PgpMessage.new(email_content)

์ธ์Šคํ„ด์Šค๋Š” ๋‹ค์Œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • #์„œ๋ช…?
  • #verified?(signature) # ์„œ๋ช…์€ ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ์˜ˆ๋ฅผ ๋“ค์–ด ์ฒจ๋ถ€ ํŒŒ์ผ์˜ ์™ธ๋ถ€ ์„œ๋ช…์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • #signature_error
  • #์•”ํ˜ธํ™”?
  • #๋ถ€ํŒจํ•  ์ˆ˜ ์žˆ๋Š”?
  • #๋ณตํ˜ธํ™”
  • #์—ด์‡ 
  • #decryption_error
  • #encrypt( ๊ณต๊ฐœ ํ‚ค(๋“ค) )
  • #์ง•ํ›„

PGP ์ธํ„ฐํŽ˜์ด์Šค

์†”์งํžˆ ๋งํ•ด์„œ ์˜์กด์„ฑ์œผ๋กœ ๊ฐ–๊ณ  ์‹ถ์€ ๋ณด์„์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ํ™•์žฅ์˜ C ์ปดํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. PGP CLI์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์‹œ๋„ํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?

ํ•ด๋…์„ ์œ„ํ•œ Postmaster::PreFilter์˜ PgpMessage ํ†ตํ•ฉ

๊ทธ๋Ÿฐ ๋‹ค์Œ PgpMessage ํด๋ž˜์Šค๋ฅผ Postmaster::PreFilter ์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋ฉ”์‹œ์ง€์˜ ๊ด€๋ จ์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PGP ์•”ํ˜ธํ™” ๋ฉ”์‹œ์ง€์ธ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์ฃผ์–ด์ง„ mail ํ•ด์‹œ์—์„œ body ๋ฐ attachments ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ x-zammad-article-preferences ํ—ค๋”๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ƒ์„ฑ๋  ๊ธฐ์‚ฌ์— ์ผ๋ถ€ ๋ฉ”ํƒ€ ์ •๋ณด(์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ)๋ฅผ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

mail[:'x-zammad-article-preferences']['decryption_key'] = instance.key
...

๋‹ค์Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ์ถฉ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • ์•”ํ˜ธ ํ•ด๋… ํ‚ค <- ํ‚ค
  • ๋ณตํ˜ธํ™”_์˜ค๋ฅ˜ <- ๋ณตํ˜ธํ™”_์˜ค๋ฅ˜(์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ)
  • ์•”ํ˜ธํ™”๋œ ๋ฉ”์‹œ์ง€ <- ๋ฉ”์ผ['๋ณธ๋ฌธ']
  • signature_status <- ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?
  • signature_error <- signature_error (์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ)

ํ•ด๋… ๊ฐ€๋Šฅํ•œ ๋ฉ”์‹œ์ง€์˜ ์ง€์›๋˜๋Š” ๋ณ€ํ˜•

PgpMessage ํด๋ž˜์Šค๋Š” (์ ์–ด๋„?) ๋“ค์–ด์˜ค๋Š” PGP ๋ฉ”์‹œ์ง€์˜ ๋‹ค์Œ ์กฐํ•ฉ๊ณผ ๋ณ€ํ˜•์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์•”ํ˜ธํ™”
  • ์„œ๋ช…
  • ์•”ํ˜ธํ™”๋œ + ์„œ๋ช…๋œ
  • ์ธ๋ผ์ธ
  • ๋ถ€์ฐฉ

์˜ˆ์ œ ๋ฉ”์ผ์ด ์ด๋ฏธ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ๋ฏธ๋ž˜์— ์‰ฝ๊ฒŒ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์ผ€์ด์Šค๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ํฌ๊ด„์ ์ธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ชฉ๋ก์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”๋œ ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ

Zammad ๋Š” HTML ์ด๋ฉ”์ผ ์ „์†ก๋งŒ ์ง€์›ํ•˜๋ฏ€๋กœ detached PGP ๋ฉ”์ผ ์ „์†ก๋งŒ ๋‹ค๋ฃจ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Zammad๊ฐ€ ์ง€์ •๋œ ์†์„ฑ์—์„œ ์ด๋ฉ”์ผ์„ ์ž‘์„ฑํ•˜๋Š” ์œ„์น˜๋Š” self.build ๋ฉ”์„œ๋“œ์˜ $# app/models/channel/email_build.rb $์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ PgpMessage ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ body ์†์„ฑ์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  encrypted ๋ฐ signed ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋œ PGP๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ™•์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ช…๋œ ๋ณธ๋ฌธ ๋‚ด์šฉ ๋ฐ ์ฒจ๋ถ€ ํŒŒ์ผ.
์ด๋ฅผ ์œ„ํ•ด ์ˆ˜์‹ ์ž ์ด๋ฉ”์ผ ์ฃผ์†Œ์˜ ๊ณต๊ฐœ ํ‚ค๋ฅผ ์กฐํšŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœํ•„์— ํ‚ค๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„์ง ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ๋…ผ์˜ํ•˜์—ฌ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

PGP๊ฐ€ ๊ตฌ์„ฑ๋˜๊ณ  ์ˆ˜์‹ ์ž๊ฐ€ ์ง€์›ํ•˜๋ฉด ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ๋ฉ”์ผ์„ ๋ณด๋‚ด๋Š” ์˜ต์…˜์ด ์—†์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ๋ช…ํ™•ํžˆ ํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ทธ๋•Œ๊นŒ์ง€๋Š” ์ด๊ฒƒ์ด ๊ฐ€์•ผ ํ•  ๊ธธ์ž…๋‹ˆ๋‹ค.

๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค

์ด๊ฒƒ์€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•˜๋ฉฐ ๋‚˜์ค‘์— ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ์ด๊ฒƒ์— ๋Œ€ํ•œ ์šฐ๋ฆฌ์˜ ์ง€์›์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ๋…ผ์˜ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•˜๋Š”์ง€ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์ง€๊ธˆ์ฏค์ด๋ฉด ์ถฉ๋ถ„ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์„ ๊ฐ€๋ฆฌ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋ก€๋ฅผ ์žฌ์ •๋ ฌํ•˜๊ณ  ๋‹ค๋ฃจ์–ด์•ผ ํ•˜์ง€๋งŒ ๋จผ์ € ๋ฐœ์ƒํ•˜๋„๋ก ํ•ด์•ผ ํ•˜๋Š” ์ง€์ ์— ๋„๋‹ฌํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ์–ธ์ œ๋“ ์ง€ ์งˆ๋ฌธํ•˜์‹ญ์‹œ์˜ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๊ณ  ๊ฒ€ํ† ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค ๐Ÿค“

์ง€์›ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿš€
ํ† ๋ฅด์Šคํ…

์†”์งํžˆ ๋งํ•ด์„œ ์˜์กด์„ฑ์œผ๋กœ ๊ฐ–๊ณ  ์‹ถ์€ ๋ณด์„์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ํ™•์žฅ์˜ C ์ปดํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. PGP CLI์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์‹œ๋„ํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?

PGP CLI๋Š” ์•ˆ์ •์ ์ด์ง€ ์•Š์œผ๋ฉฐ GPG์— ๋”ฐ๋ฅด๋ฉด API๋กœ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ruby-gpgme ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๊ณตํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ์€ ์ด ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ฅด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ GPG์—๋Š” API๊ฐ€ ์—†๊ณ  C ์ˆ˜์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ C ํ™•์žฅ ์—†์ด๋Š” ๋ฒ—์–ด๋‚  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฃจ๋น„์—์„œ GPG๋ฅผ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋‚˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅธ๋‹ค.

๋ช…ํ™•ํžˆ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ชจ๋ฅด๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ๊ฑฑ์ •๋˜์ง€๋งŒ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €๊ธฐ์š”! ์•ž์„œ ๋…ผ์˜ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ์ด ๋ฌธ์ œ๋Š” PGP ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์š”์ฒญ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— S/MIME๋„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‘˜ ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌํ˜„๋˜๊ณ  ๋‹ค๋ฅธ ๊ธฐ์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์— S/MIME ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ƒˆ๋กœ์šด ๋ฌธ์ œ #1961๋กœ ์˜ฎ๊ธฐ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ƒํ™ฉ์— ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ๊ตฌ๋…ํ•˜์‹ญ์‹œ์˜ค. ์ด์Šˆ ํŠธ๋ž˜์ปค์— ๋…ธ์ด์ฆˆ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒŒ์‹œํŒ ์—์„œ ๋…ผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

๋”ฐ๋ผ์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ณ  ์ตœ์„ ์„ ๋‹คํ•ด ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด RSpec ๋„์šฐ๋ฏธ๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‹ค์Œ ์ผ์— ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜์— ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@thorsteneckel ์ด ์•„์ง ์ฐฉ๋ฅ™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ •ํ™•ํžˆ ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? :)

@luto - ์ง€์—ฐ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค - ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/zammad/zammad/commit/f2bf4cbd029bbfdc79888c188d2a29d1ebc5f27d

spec/models/channel/filter/ *filter_filename*_spec.rb ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค( models/channel/filter/follow_up_merged.rb ์—์„œ์™€ ๊ฐ™์ด ํ•„ํ„ฐ ํด๋ž˜์Šค ์ด๋ฆ„ ๋’ค์— , type: :channel_filter ๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‘ ๋ช…์˜ ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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 ๋ฅผ ํ†ตํ•ด ์ˆ˜์ •๋˜์—ˆ์œผ๋ฏ€๋กœ ๊ธฐ๋ก์ด ๋” ๋ฉ‹์ง€๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฒ”์ฃ„๋Š” ์†์œผ๋กœ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝ์ฐฐ์€ ์ง€๊ธˆ ๋Œ€๋ถ€๋ถ„ ํ–‰๋ณตํ•ฉ๋‹ˆ๋‹ค :)

์ฝ”๋“œ์—์„œ with pythonisms๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ์ตœ์„ ์„ ๋‹คํ•ด ์ผ์„ ํ•˜๋Š” ๋ฃจ๋น„ ๋ฐฉ์‹์„ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ๋™์•ˆ, ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋ฌด์—ญ์„ ํ•˜๋Š” ํŒŒ์ด์ฌ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. Rubocop์€ ๊ทธ๋“ค ์ค‘ ์ƒ๋‹น์ˆ˜๋ฅผ ์žก์•˜์Šต๋‹ˆ๋‹ค.sweat_smile:

๋ฉ‹์ง„! ๋‚˜๋Š” ์šฐ๋ฆฌ์˜ rubocop ๊ตฌ์„ฑ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์ ์–ด๋„ ํ•œ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋œ ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค: ์Œ์ˆ˜ if unless ์‚ฌ์šฉ. ๊ทธ๋ž˜์„œ ๋‹น์‹ ์˜ rubocop์€ ์—ฌ๊ธฐ์—์„œ ๋งŽ์€ ์ผ์„ํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์˜ค, ํŒŒ์ด์ฌ์€ ์ €์—๊ฒŒ ๋”ฑ ๋งž์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋ถˆํ‰ํ•  ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค ๐Ÿค“

์•ˆ๋…•ํ•˜์„ธ์š” @luto - ๊ฐœ๋ฐœ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ณด๊ณ  ์‹ถ์—ˆ์ง€๋งŒ 24์ผ ์ดํ›„๋กœ ์ปค๋ฐ‹์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค๋ฅธ ๋‚ด๋ถ€ ํ”„๋กœ์ ํŠธ ์ˆ˜์ • :wink: :grin:
Zammad์˜ ๋ฒ”์œ„ ๋‚ด์—๋Š” ์ฐจ๋‹จ๊ธฐ๊ฐ€ ์—†์œผ๋ฉฐ ์ผ๋ฐ˜์ ์ธ ์‹œ๊ฐ„ ๋ถ€์กฑ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž‘์—…์€ ๋‹ค์Œ ์ฃผ์— ๊ณ„์†๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@thorsteneckel ๋‚˜๋Š” ์ผ์ข…์˜ ๊ฑธ๋ฆผ๋Œ์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Gpg(๋˜๋Š” ์ตœ์†Œํ•œ gpgme)๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ "์ด๋ฉ”์ผ์ด ์•”ํ˜ธํ™”๋˜์—ˆ์ง€๋งŒ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"์™€ "์ด๋ฉ”์ผ์ด ์•”ํ˜ธํ™”๋˜์–ด ์žˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค"๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ ์•ž์—์„œ ์„ค๋ช…ํ•œ encrypted? ๋ฐ decryptable? ๋ฉ”์„œ๋“œ์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ์€ ์•”ํ˜ธํ™”๋œ ๋ฉ”์ผ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ•ดํ‚น์ด ์žˆ์ง€๋งŒ ํ•ด๋…ํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์ผ์€ ์•„๋‹ˆ์ง€๋งŒ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ž‘๋™ํ•˜๊ฒŒ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

UI์—์„œ ๋ณตํ˜ธํ™” ๊ฐ€๋Šฅํ•œ ๊ฒƒ๊ณผ ์•”ํ˜ธํ™”๋œ ๊ฒƒ์„ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”? GPG ๋ฉ”์‹œ์ง€ ํ—ค๋” ๋ˆ„๋ฝ๊ณผ ๊ฐ™์€ ๋ช…๋ฐฑํ•œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ofc.

Zammad์˜ ๊ตฌํ˜„ ๋ฐ ํ†ตํ•ฉ์€ ์–ธ์ œ์ฏค ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํŠน์ • ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๊ตฌํ˜„์ด ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

์†Œ์‹์ด ์žˆ๋‚˜์š”?

๋‚˜๋Š” ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฐœ๋ฐœ์„ ์•ž๋‹น๊ธธ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ๊ฒƒ์„ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ์ง€๋งŒ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ํ™•์ธํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ด์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ ์ฃผ์†Œ๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค: [email protected] - ์ด๋ฏธ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค - ๋˜๋Š” ์นœ๊ทผํ•œ ํŠธ์œ— @ubernauten์„ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค.

@hatscher ๋Šฆ์–ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. @0xErnie ๋Š” ๋‚ด๊ฐ€ ํ˜„์žฌ ๋‹ค๋ฅธ ํ•  ์ผ์ด ์žˆ๋‹ค๊ณ  ์ถ”์ธกํ–ˆ์ง€๋งŒ ์ด ๊ธฐ๋Šฅ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์šฐ๋ฆฌ์˜ ๋ ˆ์ด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํ˜„์žฌ Zammad, Inc. ํŒ€์˜ ์ผ์›์ด ์•„๋‹Œ ์™ธ๋ถ€ ์žฌ๋‹จ ์—†์ด ๋‹จ๋…์œผ๋กœ ์ด ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐจ๋‹จ๊ธฐ์— ๊ด€ํ•ด์„œ๋Š” @thorsteneckel ์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ ์ด ์—ฌ๊ธฐ ์—ด๋ ค ์žˆ์œผ๋ฉฐ, ์ด ์งˆ๋ฌธ์˜ UI ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋น„๊ณต๊ฐœ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์นฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด @hatscher์—๊ฒŒ ์–ธ์ œ๋“ ์ง€ ์—ฐ๋ฝํ•˜์‹ญ์‹œ์˜ค! ๊ฐ€์žฅ ํฐ ์žฅ์• ๋ฌผ์€ ์‹œ๊ฐ„์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@luto ๋‹˜ , ํŠนํžˆ ๋‹ต๋ณ€์ด ๋Šฆ์–ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค! ํ˜„์žฌ ํ•„์š”ํ•œ ์‹œ๊ฐ„๊ณผ ๊ด€์‹ฌ์„ ์ค„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ 2์ฃผ ์•ˆ์— ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

์†Œ์‹์ด ์žˆ๋‚˜์š”? ์ด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค ...

@hatscher ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ํ•„์š”๋กœํ•ฉ๋‹ˆ๋‹ค :) ๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ๊ตญ ๊ธฐ๋Šฅ์„ ์ž‘์—…ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค (@luto)์ด ์ž๋ฐœ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค :) ์‹ค์ œ๋กœ ์ƒ์—…์  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ธฐ๋ถ€ (๋ˆ์ด๋‚˜ ์ผ)๊ฐ€ ์šด์ „์— ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๊ธฐ์—ฌํ•  ์‹œ๊ฐ„์ด ์—†์œผ๋ฏ€๋กœ ๋‚จ์€ ๊ฒƒ์€ ํฌ๋ง๊ณผ ์ธ๋‚ด๋ฟ์ž…๋‹ˆ๋‹ค :P

๊ธฐ์—ฌ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ: ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ˜„์žฌ ๊ฐœ๋ฐœ ์ƒํƒœ๋ฅผ PR๋กœ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

Ruby์™€ ์ผ๋ฐ˜์ ์œผ๋กœ GPG-API์˜ ์Šฌํ”ˆ ์ƒํƒœ๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ์ƒˆ๋กœ์šด GPG Rust ๊ตฌํ˜„ ์„ ์‚ดํŽด๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ๊ธˆ ํ•œ ์•Œ๋กœ:

๊ณง ๋ฐ”์ธ๋”ฉ!

PGP ๋ฐ S/MIME ํ†ตํ•ฉ์— ๊ด€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ €๋„ ์ด ๊ธฐ๋Šฅ์ด ๊ธ‰ํ•˜๊ฒŒ ํ•„์š”ํ•ด์„œ ์†Œ์ •์˜ ๊ธˆ์•ก์„ ๊ธฐ๋ถ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ฐจ๊ธฐ ๋ฒ„์ „์˜ ๊ณ„ํš๋œ ๊ธฐ๋Šฅ ๋ชฉ๋ก์ด ์‹ค์ œ๋กœ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @hatscher ์ž…๋‹ˆ๋‹ค .
์šฐ๋ฆฌ๋Š” ๋˜ํ•œ S/MIME๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ๋น„์šฉ์— ๋Œ€ํ•ด Zammad์™€ ๋…ผ์˜ ์ค‘์ž…๋‹ˆ๋‹ค. ํ†ตํ•ฉ ๋น„์šฉ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋กœ ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ? ์ €์—๊ฒŒ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.

์ด๋ฉ”์ผ์ด ์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ;-)

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ์ด ๊ธฐ๋Šฅ์— ์ž๊ธˆ์„ ์ง€์›ํ•  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(ํŒจํ‚ค์ง€๋กœ 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 ๊ฐ€ ์ˆ˜ํ–‰ํ•œ ํ›Œ๋ฅญํ•œ ์ดˆ๊ธฐ ์ž‘์—…์ด ์—ฌ์ „ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ๊ธฐ๊บผ์ด ๊ธฐํšŒ๋ฅผ ์žก์œผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋•๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒŒ์‹œํŒ ์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์—ด๊ณ  ์ €๋ฅผ ์–ธ๊ธ‰ํ•˜์„ธ์š”.

์ƒˆ๋กœ์šด ์ •๋ณด๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ณ„์† ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค - ์•ฝ์† โœŒ๏ธ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰