이 회사는 최근 extmail+postfix를 메일링 솔루션으로 사용했습니다. 기존 OA 시스템에서는 직원들이 OA에 로그인할 때 법적 계정으로 로그인해야 하지만, 이 경우 최소 두 개의 독립적인 계정과 비밀번호가 필요해 업무 효율성에 일정한 영향을 미칩니다.
따라서 기존 OA 시스템 로그인 메커니즘을 extmail과 동일한 계정과 비밀번호 정보를 사용하도록 수정하기로 결정했으며, 이는 직원들이 이메일 비밀번호를 기억하는 한 OA 시스템에 로그인할 수 있어 업무 효율성을 크게 향상시킬 수 있다는 장점이 있습니다.
이해한 후, extmail은 MySQL 사용으로 이메일 계정 정보를 저장하고, 메일박스 테이블의 비밀번호가 암호화된 비밀번호 정보를 저장하지만, extmail은 여러 암호화 방식을 지원합니다. 자세한 내용은 /var/www/extsuite/extman/webman.cf 파일의 SYS_CRYPT_TYPE 항목 설정을 확인해 보시면 됩니다.
제 시스템은 md5crypt 암호화를 사용하며, 비밀번호 형식은 $1$k0Q4EA49$XXXXXXXXXXXXXXXXXXXXX입니다. 원래 비밀번호가 메일박스 테이블에 더 이상 기록되지 않는다면, 사용자가 비밀번호를 올바르게 입력했는지 어떻게 확인할 수 있나요?
PHP 매뉴얼에서 크립트 함수 사용법을 여러 번 확인한 결과, 크립트가 다양한 해시 암호화 방식을 지원한다는 것을 알게 되었습니다. PHP 매뉴얼의 크립트 함수 구체적 사용법을 자세히 읽어보시기 바랍니다.
md5crypt는 salt를 가지고 있는데, 이 솔트는 암호화된 암호문, 즉 $ 기호와 그 안에 포함된 문자에 기록되어 있으며, 위 암호화 결과에서 Salt는 $1$k0Q4EA49$이므로 원래 비밀번호의 암호화 알고리즘을 PHP 구현하면 123456 있으며, salt는 $1$k0Q4EA49$입니다.
<?php 에코 크립트('123456', '$1$k0Q4EA49$');
출력 $1$k0Q4EA49$WcjktPPYOSyhI77n8BPPr.
이 원칙을 알게 되면 extmail의 메일박스 계정 정보 검증을 우리 시스템 어느 곳에 통합할 수 있습니다.
또한, 리눅스의 /etc/shadow와 grub의 md5-crypt의 암호화 방식은 위 원리와 정확히 같습니다. 다른 도구를 사용하지 않고 계정의 비밀번호를 강제로 123456으로 변경하고 싶다면, /etc/shadow 파일의 해당 계정의 두 번째 필드를 $1$k0Q4EA49$WcjktPPYOSyhI77n8BPPr로 설정할 수 있습니다. |