์ฌ์ฉ์๊ฐ ์๋น์ค PGP๋ก ์ํธํ๋ ๋ฉ์ผ์ ๋ณด๋ผ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ์๊ฐ ์๋ ๋ฉ์ผ์ PGP๋ก ์ํธํํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
ํนํ ๋ณด์ ์ธ์/๊ธฐ์ ํ์ฌ์ ๊ฒฝ์ฐ ์ด๊ฒ์ ๊ณ ์ ํ ๊ธฐ๋ฅ์
๋๋ค.
+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 - ์ข์ ๊ฒ ๊ฐ์ต๋๋ค! ๋ณํฉ์ ํ์ํ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฏธ gpg CLI ๋ฐ์ด๋๋ฆฌ์ API๋ฅผ ์ ๊ณตํ๋ ๋ช ๊ฐ์ง Ruby gem์ ์ดํด๋ณด์์ต๋๋ค. ๋ด๊ฐ ๊ธฐ์ตํ๋ ํ ๊ทธ๋ค ์ค ๋๊ตฌ๋ ์ ๋ง๋ก ์ ๋งํด ๋ณด์ด์ง ์์์ต๋๋ค. ์ด๊ฒ์ ์ค์ํ ์ง์ ์ด๋ฏ๋ก ์ ์ง/ํ์ง ์ข
์์ฑ์๋ง ์์กดํด์ผ ํฉ๋๋ค.
์ฌ์ฉ์ ์ ์ ๊ตฌํ์ด ๊ฐ๋ฅํ์ง๋ง ํ์ฅ์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ๋ฅผ ์ผ๋์ ๋์ญ์์ค. ๋ชจ๋ ๋ก์ง์ ๋ชจ๋์ ๋ฃ์ง ๋ง๊ณ lib ํด๋์ค๋ฅผ ๋ง๋์ญ์์ค. ๋จ์ผ ์ฑ
์ ์์น์ ์กด์คํฉ๋๋ค.
๊ธฐ๋ฅ์๋ ๋ฉ์ผ ์ก์์ ์ ์๋ช
, ํ์ธ ๋ฐ ์ํธํ/์ํธ ํด๋
์ ๋ชจ๋ ๋ณํ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค. ๐ค
๋ค๋ฅธ ๊ตฌ์ฑ ์์์์ ์ฝํ
์ธ ์ ์ก์ธ์คํ ์ ์๋๋ก ์์ ๋ฉ์์ง๋ฅผ ์ต๋ํ ๋นจ๋ฆฌ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
๋ค๋ฅธ ๊ตฌ์ฑ ์์์ ์ฝํ
์ธ ์ ์ก์ธ์คํ ์ ์์ผ๋ ค๋ฉด ๋๊ฐ๋ ๋ฉ์์ง๋ฅผ ์ต๋ํ ๋ฆ๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
๊ณต๊ฐ ํค์ ๊ฐ์ธ ํค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ฉ์ง ๊ด๋ฆฌ์ ์ธํฐํ์ด์ค๊ฐ ์์ด์ผ ํฉ๋๋ค.
๊ถ๊ธํ ์ ์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง [email protected] ์ผ๋ก ๋ฌธ์ํ๊ณ ์ด์ ๋ํ ์ง์์ ๋ฐ์ผ์ญ์์ค. ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํ์ ๋ฐ๊ฒ ๋์ด ๋์ฑ ๊ธฐ์ฉ๋๋ค ๐ช ์๋ง๋ ๋ฐฉ์์ผ๋ก ํฉ์๋ค ๐
์ฐ๋ฆฌ๋ ๋ํ ๊ทธ๋ฌํ ์์ฌ ์ํต์ ํ์๋กํ๋ ์ฒซ ๋ฒ์งธ ๊ณ ๊ฐ์ ์ป์์ผ๋ฏ๋ก์ด ๊ณ ๊ฐ์๊ฒ๋ ํฌํํฉ๋๋ค. ์ด๋ฏธ ์ง์ ์ด ์์ต๋๊น? ๋ฒ ํ ํ ์คํธ์๋ ๋์์ด ๋๊ณ ์ถ์ต๋๋ค.
@martinseener faik ์ด๊ฒ์ Zammad ํ์ ๋ก๋๋งต์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ์ฌ ์ด๊ฒ์ ์์ฒด์ ์ผ๋ก ๊ตฌํํ ๊ณํ์ ๋๋ค. ๋ ๋นจ๋ฆฌ ์ฒ๋ฆฌํ๊ณ ๊ณ ๊ฐ์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์๋๋ก ์นฉ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ๋ด github ํ๋กํ์ ์๋ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ํตํด ์์ ๋กญ๊ฒ ์ฐ๋ฝํ์ธ์.
@thorsteneckel ์ ๋ ํ์ฌ ๋ ๋ถ๋ถ์ผ๋ก ๋ฉ์ผ์ ์์ ํ๊ธฐ ์ํ ๊ตฌํ์ ํ๋กํ ํ์ดํํ๊ณ ์์ต๋๋ค.
Postmaster::PreFilter
์ ์๋ ๋ฉ์ผ์ ๋ณตํธํ: ๋ณตํธํ๋ ๋ฉ์์ง๋ฅผ ๋ด์ฉ์ผ๋ก ์ค์ ; ์๋ณธ์ ๋ฒ๋ฆฌ์ญ์์ค. ์ฌ์ฉ๋ ์ํธ ํด๋
ํค๋ฅผ ๋ฉํ๋ฐ์ดํฐ์ ์ ์ฅPostmaster::PostFilter
์์ GpgCryptoInfo
๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ Article
์ ์ฐ๊ฒฐํฉ๋๋ค. ์ฌ์ฉ๋ ์ํธ ํด๋
ํค ๋ฐ ์๋ช
์ํ์ ๊ฐ์ ์ ๋ณด๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋ช ๊ฐ์ง ์ง๋ฌธ:
Channel::EmailParser
๋ก ํ๋์ฝ๋ฉํด์ผ ํฉ๋๊น?Postmaster::PreFilter
๊ตฌ๋
์๊ฐ ์์ต๋๊น? ์ด ๊ฒฝ์ฐ ํ๋์ฝ๋ฉ๋ ๊ตฌํ ๋๋ Postmaster::EarlyPreFilter
๊ฐ ํ์ํฉ๋๋ค.๋ํ ์ผ๋ฐ์ ์ธ ์ง๋ฌธ: EmailParser
๋๋ ํํฐ๊ฐ ๋ฉ์ผ์ _ํด๋
_ํ ์ ์๋ ์๋ฒฝํ ์ฅ์์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ํธํํ "์๋ฒฝํ" ์ฅ์๋ฅผ ์๊ฐํ ์ ์์ต๋๊น?
์ด ๋ฌธ์ ๊ฐ ๊ตฌํ์ ๋ํ ์ง๋ฌธ์ ํ ์ ์๋ ์ฌ๋ฐ๋ฅธ ์ฅ์์ด๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ฌ๋, ๊ฐ๊ธ์ ์ด๋ฉด ๊ณต๊ฐ ๋์์ ๊ฐ๋ฆฌ์ผ ์ฃผ์ธ์. :) ๊ฐ์ฌํฉ๋๋ค!
์๋ ํ์ธ์ @luto - ์ ๋ ํ์ฌ ์ด์ ๋ํ ์ ์๊ฐ์ ์ ๊ณ ์์ต๋๋ค. ๋ค์ ํฌ๊ณ ์ค์ํ ์ฃผ์ ์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ด๋ฒ์ฃผ๋ง๊น์ง ๋๋ด๋ ค๊ณ ํฉ๋๋ค. ์ดํดํด ์ค์ ๊ณ ๋ง์.
์๊ท๋ชจ ์
๋ฐ์ดํธ: Postmaster::PreFilter
ํํฐ๊ฐ ์ฃผ๋ฌธ๋ฉ๋๋ค. ๋๋ ํ์ฌ IdentifySender
๋ฐ๋ก ๋ค์ ๋ด ๊ฒ์ ๋ฐฐ์นํ์ฌ ์๋ํ gpg ํค๋ฅผ ์์๋ผ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ์๊ณ ์์ผ๋ฉด ํํฐ๊ฐ ๋๋ฅผ ์ํด ์ํธ๋ฅผ ํด๋
ํ ์ ์๋ ์ฌ๋ฐ๋ฅธ ์ฅ์์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@thorsteneckel ์๊ฐ ๋ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๊ทํ์ ์์ฑ์ ๊ธฐ๋ํฉ๋๋ค. :)
์๋
ํ์ธ์ @luto๋ , ๋ฐ๊ฐ์ต๋๋ค! ๋๋ ๋น์ ์ด ์ ์ํ ๋๋ก ์ด ๋ฌธ์ ์ ๋ํ ์กฐ์ ์ ๊ฐ๊ณ ์ถ์ต๋๋ค. ๋ฐ๋ผ์ ํฌ๋ช
ํ ๊ฒ์ด๋ฉฐ ๊ธฐ์ ๋ฌธ์์ ๊ณต์ ๋ ์ ๋ณด๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ํฌํฌ์ ์์
๋ถ๊ธฐ์์ ์ด ๋ฌธ์ ๋ฅผ ์ฐธ์กฐํ ์ ์์ผ๋ฉฐ ์ฌ๊ธฐ์์ ์ฐธ์กฐ๋ฉ๋๋ค. ๋ณ๊ฒฝ์ด ์๋ฃ๋ ํ ํ ๋ฆฌํ์คํธ๋ฅผ ์์ฑํด์ฃผ์ธ์. ๊ทธ๋์ ๊ทํ์ ์ง์ ์ ํ์ธํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๊ฒ ์ต๋๋ค.
์ง๊ธ์ ๊ตฌํํ์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ S/MIME ๊ธฐ๋ฅ์ ๋ณ๋์ ๋ฌธ์ ๋ก ์ฎ๊ฒจ์ผ ํฉ๋๋ค.
๊ทํ์ ์ง๋ฌธ์ ๊ดํ์ฌ: ๋น์ ์ ์์ ํ ์ฌ๋ฐ๋ฅธ ๊ธธ์ ๊ฐ๊ณ ์์ต๋๋ค. ๊ฐ๋ ๊ธธ์ ๋ช ๊ฐ์ง๋ฅผ ์ ๊ณ ์ง๋ฌธ์ ๋ตํ๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ์ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ(RSpec ์ฌ์ฉ)์ ์ด๋ฌํ ์ข
๋ฅ์ ์์
์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉ์์๊ฒ ๋ฌ๋ ค ์์ง๋ง ๊ธฐ๋ฅ์ ๋ํ ํฌ๊ด์ ์ธ ํ
์คํธ ์ ํ๊ตฐ์ด ํ์คํ ํ์ํฉ๋๋ค. ๋ฐ๋ผ์ ํ
์คํธ๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ณ ์ต์ ์ ๋คํด ์ง์ํ๊ธฐ ์ํด RSpec ๋์ฐ๋ฏธ๋ฅผ ์ ๊ณตํ ๊ฒ์
๋๋ค. ๋ค์ ๋ ์ develop
๊ดํธ์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. ์ด ๋ถ๊ธฐ๋ ์์
๋ถ๊ธฐ์ด๋ฏ๋ก ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ง์คํฐ์ ๋ณํฉ๋์ด ํฅํ ์์ ์ ์ผ๋ก ๋์ฒด๋ฉ๋๋ค.
Postmaster::PreFilter
s๋ ์ฌ๋ฐ๋ฅธ ์ฅ์์
๋๋ค. ํํฐ ๋ฑ๋ก ์ด๋ฆ์ ์๋ ์ซ์ ์ ๋์ฌ๋ก ์คํ ์๊ฐ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๋ฎ์ ์ซ์๋ ๋ ์ผ์ฐ ์คํ ๋ฉ๋๋ค.
์ด๋ฏธ ์ด๊ธฐํ๋ ์์คํ
์ ๊ฒฝ์ฐ ์ค์ ์ ์ถ๊ฐํ๋ ๋ง์ด๊ทธ๋ ์ด์
๋ ํ์ํฉ๋๋ค .
๋๋ app/models/channel/filter/decrypt.rb
์ ๊ฐ์ ์ด๋ฆ์ ์ ์ํ๊ณ ์ถ์ง๋ง ๊ฒฐ๊ตญ ๊ทธ๊ฒ์ ๋น์ ์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค.
๋ฑ๋ก์ด ์๋ฃ๋๋ฉด Zammad๋ ๊ฐ ์์ ๋ฉ์ผ์ ๋ํด ํํฐ๋ฅผ ์คํํฉ๋๋ค.
์ด ์์ ์์ PGP๋ง ๊ตฌํํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋์ค์ S/MIME์ ์ถ๊ฐํ๋ ๋ฐ ์ฅ์ ๋ฌผ์ ์ถ๊ฐํ์ง ์๋๋ก ํด์ผ ํฉ๋๋ค. ๋ํ ํฅํ์๋ ์ด๋ฉ์ผ ์ ์ฉ์ด ์๋ ๋ค๋ฅธ ์ฑ๋์์ PGP๋ฅผ ์ง์ํด์ผ ํ ์๋ ์์ต๋๋ค. ์ด๊ฒ์ ์ผ๋์ ๋๋ฉด ์ฐ๋ฆฌ๊ฐ ์ค๊ณํ๋ ๋ฐฑ์๋์ API๊ฐ ํ ์คํธ ๋ฐ ํตํฉํ๊ธฐ ์ฌ์ธ ๊ฒ์ ๋๋ค. ๋ด ์ ์์ ๋ฐ๋ผ(ํ ๋ก ์ ์ํด ์ด๋ ค ์์):
lib/pgp_message.rb
ํ์ผ์ PgpMessage
๋ผ๋ ํด๋์ค๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ด ํด๋์ค๋ (์๋ง๋) ์ํธํ๋ ๋ฉ์์ง ๋ฌธ์์ด/๋ฉ์ผ ๋ด์ฉ์ด ๋ ํ๋์ ํ์ ์ธ์๋ฅผ ์ทจํฉ๋๋ค. ์์:
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๊ฐ ๊ตฌ์ฑ๋๊ณ ์์ ์๊ฐ ์ง์ํ๋ฉด ์ํธํ๋์ง ์์ ๋ฉ์ผ์ ๋ณด๋ด๋ ์ต์ ์ด ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ช ํํ ํด์ผ ํ์ง๋ง ๊ทธ๋๊น์ง๋ ์ด๊ฒ์ด ๊ฐ์ผ ํ ๊ธธ์ ๋๋ค.
์ด๊ฒ์ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ฉฐ ๋์ค์ ์ค๋ช ๋ฉ๋๋ค. ๋๋ ๋น์ ์ด ์ด๊ฒ์ ๋ํ ์ฐ๋ฆฌ์ ์ง์์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด๋ถ์ ์ผ๋ก ๋ ผ์ํ๊ณ ์ด๋ป๊ฒ ์ ๊ทผํ๋์ง ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ง๊ธ์ฏค์ด๋ฉด ์ถฉ๋ถํ๊ณ ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ ๊ฐ๋ฆฌ์ผ์ผ ํฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋ก๋ฅผ ์ฌ์ ๋ ฌํ๊ณ ๋ค๋ฃจ์ด์ผ ํ์ง๋ง ๋จผ์ ๋ฐ์ํ๋๋ก ํด์ผ ํ๋ ์ง์ ์ ๋๋ฌํ๊ฒ ๋ ๊ฒ์
๋๋ค.
์ง๋ฌธ์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง ์ง๋ฌธํ์ญ์์ค.
๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๊ณ ๊ฒํ ํ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค ๐ค
์ง์ํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค ๐
ํ ๋ฅด์คํ
์์งํ ๋งํด์ ์์กด์ฑ์ผ๋ก ๊ฐ๊ณ ์ถ์ ๋ณด์์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๋ชจ๋ ๊ด๋ฆฌ๋์ง ์๊ฑฐ๋ ๋ณต์กํ๊ฑฐ๋ ํ์ฅ์ 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 ๊ฐ ์ํํ ํ๋ฅญํ ์ด๊ธฐ ์์
์ด ์ฌ์ ํ ์์ต๋๋ค. ๋๊ตฌ๋ ์ง ๊ธฐ๊บผ์ด ๊ธฐํ๋ฅผ ์ก์ผ๋ฉด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ๋๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์ปค๋ฎค๋ํฐ ๊ฒ์ํ ์์ ์ค๋ ๋๋ฅผ ์ด๊ณ ์ ๋ฅผ ์ธ๊ธํ์ธ์.
์๋ก์ด ์ ๋ณด๊ฐ ๋์ค๋ฉด ๊ณ์ ์๋ ค๋๋ฆฝ๋๋ค - ์ฝ์ โ๏ธ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@hatscher ์ฐ๋ฆฌ ์ค ๋ง์ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ํ์๋กํฉ๋๋ค :) ๊ทธ๋ฌ๋ ๊ฒฐ๊ตญ ๊ธฐ๋ฅ์ ์์ ํ๋ ๋ชจ๋ ์ฌ๋๋ค (@luto)์ด ์๋ฐ์ ์ผ๋ก ์ํํฉ๋๋ค :) ์ค์ ๋ก ์์ ์ ํ์๊ฐ ์๋ค๋ฉด ๊ธฐ๋ถ (๋์ด๋ ์ผ)๊ฐ ์ด์ ์ ๋์์ด ๋ ๊ฒ์ ๋๋ค. ์งํ ์ํฉ์ ์ ๋ฌํฉ๋๋ค. ๋ถํํ๋ ๊ธฐ์ฌํ ์๊ฐ์ด ์์ผ๋ฏ๋ก ๋จ์ ๊ฒ์ ํฌ๋ง๊ณผ ์ธ๋ด๋ฟ์ ๋๋ค :P
๊ธฐ์ฌ์ ๋ํด ์ด์ผ๊ธฐํ๊ธฐ: ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ธฐ์ฌํ ์ ์๋ค๊ณ ์๊ฐ๋๋ฉด ์ฐธ์ฌํ ์ ์๋๋ก ํ์ฌ ๊ฐ๋ฐ ์ํ๋ฅผ PR๋ก ์ ์ถํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?