
현재 우리는 완벽하게 작동하는 POP/IMAP/웹메일 시스템(Dovecot 및 Roundcube 사용)을 보유하고 있으며 이는 의도된 디자인에서 완벽한 타워입니다. 우리는 "기본" 도메인(ourdomain.com이라고 부르겠습니다)에 속해 있고 사용자 이름과 비밀번호를 사용하여 성공적으로 로그인한 수천 명의 고객을 보유하고 있습니다. 우리가 호스팅하는 도메인을 소유한 사람이 수천 명 더 있는데, 그들은 전체 이메일 주소와 비밀번호(customerdomain.com이라고 함)를 사용하여 성공적으로 로그인했습니다. 1990년대부터 이러한 방식은 고객 구성이 확고히 자리 잡았기 때문입니다.
문제는 이제 사람들이 전체 이메일 주소를 사용하여 웹 양식에 로그인하는 데 익숙해졌기 때문에 ourdomain.com을 사용하는 사람들은 다음을 사용하여 웹 메일에 로그인해야 한다는 점입니다.오직사용자 이름. 이것은 우리 기술 지원 부서가 일주일에 여러 번 받는 전화이며(나도 이 일을 한 것에 대해 유죄이고 기술 지원에 전화하지 않습니다) 아마도 일종의 소프트웨어 솔루션으로 제거되어야 할 것입니다.
그러면 Roundcube나 Dovecot이 "[이메일 보호됨]"를 대신 "사용자 이름"으로 사용하면 시스템에 있는 모든 사람의 실제 사용자 이름을 변경할 필요가 없나요? 하지만오직도메인이 "ourdomain.com"이고~ 아니다"customerdomain.com". 우리가 수행하는 모든 사용자 지정 코딩은 보안 업그레이드를 수행할 때마다 다시 구현되어야 하며 해당 옵션은 가능한 마지막 선택으로만 간주됩니다.
요약:
우리에게는 다음 논리가 필요합니다.
if $email contains @ourdomain.com
{
remove @ourdomain.com;
submit to roundcube;
} else {
submit to roundcube;
}
답변1
이 문제는 roundcube, dovecot 또는 사용자 이름 백엔드에서 해결할 수 있습니다.
Roundcube에는 다음과 같은 옵션이 있습니다.도메인이 제공되지 않은 경우 자동으로 도메인 부분 추가(제안대로콘디바스). 그러나 귀하의 경우에는 그다지 유용하지 않습니다. 물론 라운드큐브(PHP 언어 사용)를 패치하여 논리를 추가할 수 있습니다.
Dovecot에는 다음과 같은 옵션이 있습니다.스트립 도메인(에서 제안한대로 사용자 이름@도메인 형식을 사용할 때 Dovecot 사용자 조회가 실패합니다.) 그러나 조건부 제거(예: 도메인 = @ourdomain.com인 경우 도메인 제거)는 수행할 수 없습니다. 물론 C 언어를 사용하여 비둘기장을 패치하여 논리를 추가할 수 있습니다.
사용자 이름 백엔드도 옵션입니다. 사용하는 백엔드(SQL, LDAP, 사용자 정의 엔진)를 제공하지 않습니다. 두 가지 형식의 사용자 이름 열이 있다고 상상할 수 있습니다.도메인 유무에 관계없이. 이제 도메인이 없는 모든 사용자 이름을 사용자 이름@우리도메인으로 변환할 수 있습니다. 이 프로세스를 옵션 1(roundcube 자동 추가 도메인)과 결합하여 사용자 이름과 사용자 이름@ourdomain 중 하나가 로그인할 수 있도록 할 수 있습니다.
답변2
RoundCube
라는 옵션이 있습니다username_domain
// Automatically add this domain to user names for login
// Only for IMAP servers that require full e-mail addresses for login
// Specify an array with 'host' => 'domain' values to support multiple hosts
// Supported replacement variables:
// %h - user's IMAP hostname
// %n - hostname ($_SERVER['SERVER_NAME'])
// %t - hostname without the first part
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
// %z - IMAP domain (IMAP hostname without the first part)
// For example %n = mail.domain.tld, %t = domain.tld
$config['username_domain'] = '';
하위 디렉토리(예: )를 사용한 경우 ourdomain.tld/roundcube
이 옵션을
$config['username_domain'] = '%n';
하위 도메인(예:)을 사용한 경우 mail.domain.tld
이 옵션을
$config['username_domain'] = '%t';
사용자가 로그인 시 전체 이메일을 제공하면 해당 이메일은 변경 없이 사용됩니다. 도메인 부분이 생략된 경우 RoundCube
완성을 위해 URL 도메인을 사용합니다. 또한 roundcube의 구성에는 깔끔한 옵션이 많이 있습니다.