서비스 데스크 구성

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed

기본적으로 새 프로젝트에서 서비스 데스크가 활성화됩니다. 활성화되지 않았다면 프로젝트 설정에서 설정할 수 있습니다.

필수 조건:

프로젝트에서 서비스 데스크를 활성화하려면:

  1. 왼쪽 사이드 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 서비스 데스크를 확장합니다.
  4. 서비스 데스크 활성화 토글을 켭니다.
  5. (선택 사항) 필드를 작성합니다.
  6. 변경 사항 저장을 선택합니다.

이제 이 프로젝트에서 서비스 데스크가 활성화되었습니다. 누군가가 다음 서비스 데스크에 사용할 이메일 주소로 이메일을 보내면, GitLab은 해당 이메일 내용으로 비밀 이슈를 생성합니다.

서비스 데스크 용어집

이 용어집에는 서비스 데스크와 관련된 용어의 정의가 포함되어 있습니다.

용어 정의
외부 참여자 GitLab 계정이 없는 사용자로, 이메일을 통해서만 이슈 또는 서비스 데스크 티켓과 상호 작용할 수 있습니다.
요청자 서비스 데스크 티켓을 생성하거나 /convert_to_ticket 빠른 액션을 사용하여 요청자로 추가된 외부 참여자입니다.

프로젝트의 보안 강화

서비스 데스크 프로젝트의 보안을 강화하려면 다음을 수행해야 합니다:

  • 서비스 데스크 이메일 주소를 이메일 시스템의 별칭 뒤에 숨겨 나중에 변경할 수 있도록 합니다.
  • 이 서비스에 스팸 확인을 추가하기 위해 GitLab 인스턴스에서 Akismet를 활성화합니다. 차단되지 않은 이메일 스팸은 많은 스팸 이슈가 생성될 수 있습니다.

외부 참여자에게 보내는 이메일 사용자 정의

  • UNSUBSCRIBE_URL, SYSTEM_HEADER, SYSTEM_FOOTER, ADDITIONAL_TEXT 플레이스홀더들은 GitLab 15.9에서 도입되었습니다.
  • %{ISSUE_DESCRIPTION} 플레이스홀더는 GitLab 16.0에서 도입되었습니다.
  • %{ISSUE_URL} 플레이스홀더는 GitLab 16.1에서 도입되었습니다.

외부 참여자에게 이메일이 다음에 전송됩니다:

  • 요청자가 서비스 데스크로 이메일을 보내어 새 티켓을 제출하는 경우
  • 외부 참여자가 서비스 데스크 티켓에 추가되는 경우
  • 서비스 데스크 티켓에 새로운 공개 코멘트가 추가되는 경우
    • 코멘트를 수정하더라도 새로운 이메일이 전송되지는 않습니다.

이러한 이메일 메시지의 내용을 서비스 데스크 이메일 템플릿으로 사용자 정의할 수 있습니다. 템플릿에는 GitLab Flavored Markdown일부 HTML 태그들을 포함할 수 있습니다. 예를 들어, 이메일을 회사의 브랜드 가이드에 따라 헤더 및 푸터가 포함되도록 서식을 지정할 수 있습니다. 또한 서비스 데스크 티켓이나 GitLab 인스턴스와 관련된 동적 콘텐츠를 표시하기 위해 다음 플레이스홀더들을 포함할 수도 있습니다.

플레이스홀더 thank_you.mdnew_participant new_note.md 설명
%{ISSUE_ID} 티켓 IID입니다.
%{ISSUE_PATH} 티켓 IID가 포함된 프로젝트 경로입니다.
%{ISSUE_URL} 티켓의 URL입니다. 외부 참여자는 프로젝트가 공개되었고 티켓이 비밀(서비스 데스크 티켓은 기본적으로 비밀입니다)이 아닌 경우에만 티켓을 볼 수 있습니다.
%{ISSUE_DESCRIPTION} 티켓 설명입니다. 사용자가 설명을 수정한 경우, 민감한 정보가 포함될 수 있으므로 이 플레이스홀더를 신중하게 사용하고 가능한 경우 템플릿 디자인에 대해 팀원들을 알리세요.
%{UNSUBSCRIBE_URL} 구독 취소 URL입니다.
%{NOTE_TEXT} 아니오 사용자가 티켓에 새로 추가한 코멘트입니다. 반드시 이 플레이스홀더를 new_note.md에 포함해야 합니다. 그렇지 않으면 외부 참여자는 티켓의 업데이트를 볼 수 없을 수 있습니다.

감사 이메일

요청자가 서비스 데스크를 통해 이슈를 제출하면 GitLab은 감사 이메일을 보냅니다. 추가 설정하지 않은 경우 기본 감사 이메일이 GitLab에 의해 전송됩니다.

사용자 정의 감사 이메일 템플릿을 생성하려면:

  1. 리포지토리의 .gitlab/service_desk_templates/ 디렉토리에 thank_you.md라는 이름의 파일을 생성합니다.
  2. Markdown 파일에 GitLab Flavored Markdown, 일부 선택한 HTML 태그 및 답변을 사용자 정의하기 위한 플레이스홀더를 작성합니다.

새 참여자 이메일

  • new_participant 이메일은 GitLab 17.0에서 도입되었습니다.

외부 참여자가 티켓에 추가되면 GitLab은 그들에게 새 참여자 이메일을 보내어 대화에 참여했음을 알립니다. 추가 설정하지 않은 경우 기본 새 참여자 이메일이 GitLab에 의해 전송됩니다.

사용자 정의 새 참여자 이메일 템플릿을 생성하려면:

  1. 리포지토리의 .gitlab/service_desk_templates/ 디렉토리에 new_participant.md라는 파일을 생성합니다.
  2. Markdown 파일에 GitLab Flavored Markdown, 일부 선택한 HTML 태그 및 답변을 사용자 정의하기 위한 플레이스홀더를 작성합니다.

새 노트 이메일

서비스 데스크 티켓에 공개 코멘트가 추가되면, GitLab은 새 노트 이메일을 전송합니다. 추가 구성 없이, GitLab은 코멘트의 내용을 전송합니다.

이메일을 브랜드에 맞게 유지하려면, 사용자 정의 새 노트 이메일 템플릿을 만들 수 있습니다. 다음과 같이 진행하세요:

  1. 리포지토리의 .gitlab/service_desk_templates/ 디렉터리에 new_note.md라는 이름의 파일을 만듭니다.
  2. 새 노트 이메일을 사용자 정의하기 위해, Markdown 파일에 GitLab Flavored Markdown, 일부 선택된 HTML 태그, 그리고 새 노트 이메일을 사용자 정의하는 데 필요한 플레이스홀더를 작성합니다. 이때 템플릿에 %{NOTE_TEXT}를 포함하여 이메일 수신자가 코멘트의 내용을 읽을 수 있도록 해야 합니다.

인스턴스 전체 이메일 헤더, 푸터 및 추가 텍스트

Tier: Free, Premium, Ultimate Offering: Self-Managed

인스턴스 관리자는 GitLab 인스턴스에 헤더(header), 푸터(footer) 또는 추가 텍스트를 추가하고 GitLab에서 보내는 모든 이메일에 이를 적용할 수 있습니다. thank_you.md, new_participant, 또는 new_note.md를 사용 중이라면, 해당 내용을 포함하려면 템플릿에 %{SYSTEM_HEADER}, %{SYSTEM_FOOTER}, 또는 %{ADDITIONAL_TEXT}를 추가하세요.

자세한 정보는 System header and footer messagescustom additional text를 참조하세요.

서비스 데스크 티켓에 대한 사용자 정의 템플릿 사용

각 프로젝트 당 선택된 설명 템플릿 마다 하나를 선택하여 모든 새로운 서비스 데스크 티켓 설명에 추가할 수 있습니다.

다음과 같은 여러 수준에서 설명 템플릿을 설정할 수 있습니다:

템플릿은 상속됩니다. 예를 들어, 프로젝트에서는 인스턴스 또는 프로젝트의 상위 그룹에 설정된 템플릿에도 액세스할 수 있습니다.

전제 조건:

서비스 데스크와 함께 사용자 정의 설명 템플릿을 사용하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 서비스 데스크를 확장합니다.
  4. 드롭다운 목록에서 모든 서비스 데스크 티켓에 추가할 템플릿을 검색하거나 선택하세요.

지원 봇 사용자

서비스 데스크는 특별한 지원 봇 사용자가 이슈를 생성함으로써 작동합니다. 이 사용자는 청구 대상 사용자가 아니므로, 라이선스 제한 수에는 포함되지 않습니다.

GitLab 16.0 및 이전 버전에서는 서비스 데스크 이메일에서 생성된 코멘트에 GitLab Support Bot이 작성자로 표시됩니다. GitLab 16.1 및 이후에서는 이러한 코멘트는 이메일을 보낸 사용자의 이메일이 표시됩니다. 이 기능은 GitLab 16.1 및 이후에서 작성된 코멘트에만 적용됩니다.

지원 봇의 표시 이름 변경

지원 봇 사용자의 표시 이름을 변경할 수 있습니다. 서비스 데스크에서 보내는 이메일은 From 헤더에 이 이름이 표시됩니다. 기본 표시 이름은 GitLab Support Bot입니다.

사용자 정의 이메일 표시 이름을 편집하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 서비스 데스크를 확장합니다.
  4. 이메일 표시 이름 아래에 새 이름을 입력합니다.
  5. 변경 사항 저장을 선택합니다.

기본 티켓 가시성

새 티켓은 기본적으로 기밀로 표시되어 있으므로, 적어도 리포터 역할을 가진 프로젝트 구성원만 볼 수 있습니다.

비공개 및 내부 프로젝트에서는 GitLab을 구성하여 새 티켓을 기본적으로 기밀로 표시하지 않고 프로젝트 구성원 누구나 볼 수 있도록 할 수 있습니다.

공개 프로젝트에서는 새 티켓이 항상 기본적으로 기밀로 표시되므로 이 설정을 사용할 수 없습니다.

전제 조건:

  • 프로젝트에 적어도 관리자 역할이 있어야 합니다.

이 설정을 해제하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 서비스 데스크를 확장합니다.
  4. 새 티켓을 기본적으로 기밀로 처리 확인란을 선택 해제합니다.
  5. 변경 사항 저장을 선택합니다.

외부 참여자가 코멘트를 추가할 때 이슈 다시 열기

GitLab을 구성하여 외부 참여자가 이메일로 이슈에 새 코멘트를 추가할 때 닫힌 이슈를 다시 열도록 할 수 있습니다. 이로써 해당 이슈의 담당자를 언급하는 내부 코멘트가 추가되고, 이를 위해 이슈의 담당자에 대한 to-do 항목도 생성됩니다.

쇼케이스 비디오를 보려면 짧은 쇼케이스 비디오를 참조하세요.

전제 조건:

  • 프로젝트에 적어도 관리자 역할이 있어야 합니다.

이 설정을 활성화하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 서비스 데스크를 확장합니다.
  4. 외부 참여자가 새 코멘트를 추가할 때 이슈 다시 열기 확인란을 선택합니다.
  5. 변경 사항 저장을 선택합니다.

사용자 정의 이메일 주소

Status: Beta

지원 통신을 보내는 사람으로 표시될 사용자 정의 이메일 주소를 구성할 수 있습니다. 알려진 도메인을 사용하고 지원 요청자 사이에서 브랜드 신원을 유지하세요.

개요를 보려면 짧은 쇼케이스 비디오를 참조하세요.

이 기능은 베타 상태입니다. 베타 기능은 제품 준비 상태는 아니지만, 출시 전에 크게 변경되기는 힘들다는 특징이 있습니다. 사용자들께서 베타 기능을 사용하고 피드백 이슈에 의견을 제공하는 것을 권장합니다.

전제 조건

각 프로젝트 당 Service Desk에 대해 하나의 사용자 정의 이메일 주소를 사용할 수 있으며 해당 인스턴스 전체에서 고유해야 합니다.

사용하려는 사용자 정의 이메일 주소는 다음 요구 사항을 모두 충족해야 합니다.

  • 이메일 전달을 설정할 수 있어야 합니다.
  • 전달된 이메일은 원래 From 헤더를 유지해야 합니다.
  • 서비스 제공 업체는 하위 주소 지원해야 합니다. 이메일 주소는 로컬 부분(@ 이전의 모든 것)과 도메인 부분으로 구성됩니다.

    이메일 하위 주소를 사용하면 로컬 부분 뒤에 + 기호와 임의의 텍스트를 추가하여 이메일 주소의 고유한 변형을 만들 수 있습니다. 이메일 주소 support@example.com가 주어졌다면 support+1@example.com으로 이메일을 보내 하위 주소가 지원되는지 확인해보세요. 해당 이메일은 주소록에 나타나어야 합니다.

  • SMTP 자격 증명이 있어야 합니다(이상적으로는 앱 비밀번호를 사용해야 합니다). 사용자 이름과 암호는 256비트 키를 사용하여 고급 암호화 표준(AES)을 사용하여 데이터베이스에 저장됩니다.
  • SMTP 호스트는 GitLab 자체 관리형의 네트워크(자체 관리형 GitLab의 경우) 또는 공용 인터넷(GitLab SaaS의 경우)에서 해석될 수 있어야 합니다.
  • 프로젝트에 대해 적어도 Maintainer 역할을 가지고 있어야 합니다.
  • 프로젝트에 대해 Service Desk가 구성되어 있어야 합니다.

사용자 정의 이메일 주소 구성

자체 이메일 주소를 사용하여 Service Desk 이메일을 보낼 때 사용자 정의 이메일 주소를 구성 및 확인합니다.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. Service Desk를 확장하고 사용자 정의 이메일 주소 구성 섹션을 찾습니다.
  4. 이 프로젝트의 제공된 Service Desk 주소를 메모하고 이메일 제공업체(예: Gmail)에서 사용자 정의 이메일 주소에서 Service Desk 주소로의 이메일 전달을 설정합니다.
  5. GitLab에서 필드를 작성합니다.
  6. 저장 및 연결 테스트를 선택합니다.

구성이 저장되고 사용자 정의 이메일 주소의 확인이 트리거됩니다.

확인

  1. 구성을 완료한 후 모든 프로젝트 소유자 및 사용자가 사용자 정의 이메일 구성을 저장한 관리자는 알림 이메일을 받습니다.
  2. 제공된 SMTP 자격 증명을 사용하여 확인 이메일이 사용자 정의 이메일 주소(하위 주소 부분 포함)로 전송됩니다. 이 이메일에는 확인 토큰이 포함되어 있습니다. 이메일 전달이 올바로 설정되고 모든 전제 조건이 충족되면, 이메일이 Service Desk 주소로 전달되어 GitLab에서 수신됩니다. GitLab은 다음 조건을 확인합니다.
    1. GitLab이 SMTP 자격 증명을 사용하여 이메일을 보낼 수 있는지 확인합니다.
    2. 하위 주소가 지원되는지 확인합니다(+verify 하위 주소 부분을 포함).
    3. 전달 후 From 헤더가 보존되는지 확인합니다.
    4. 확인 토큰이 올바른지 확인합니다.
    5. 30분 이내에 이메일이 받아지는지 확인합니다.

일반적으로 이 프로세스는 몇 분만 소요됩니다.

언제든지 확인을 취소하거나 실패한 경우 사용자 정의 이메일 재설정을 선택하세요. 설정 페이지는 업데이트되어 확인의 현재 상태를 반영합니다. SMTP 자격 증명이 삭제되고 구성을 다시 시작할 수 있습니다.

실패 및 성공 시 모든 프로젝트 소유자 및 확인 프로세스를 트리거한 사용자는 확인 결과를 포함한 알림 이메일을 받습니다. 확인이 실패한 경우 이메일에는 실패한 이유의 상세 내용도 포함됩니다.

확인이 성공하면 사용자 정의 이메일 주소를 사용할 수 있습니다. 이제 사용자 정의 이메일 주소를 통해 Service Desk 이메일을 보낼 수 있습니다.

구성 문제 해결

사용자 정의 이메일을 구성하는 동안 다음과 같은 문제가 발생할 수 있습니다.

유효하지 않은 자격 증명

유효하지 않은 자격 증명이 사용되었다는 오류가 발생할 수 있습니다.

이는 SMTP 서버가 인증이 성공하지 않았다고 반환할 때 발생합니다.

이를 해결하려면:

  1. 사용자 이름 및 암호를 포함한 SMTP 자격 증명을 확인합니다.
  2. 때로는 GitLab이 SMTP 서버가 지원하는 인증 방법을 자동으로 선택할 수 없을 수 있습니다. 다음 중 하나를 시도하세요.

    • 사용 가능한 인증 방법(Plain, Login, CRAM-MD5)을 시도합니다.
    • SMTP 서버가 지원하는 인증 방법을 확인하고 swaks 명령 줄 도구를 사용하여 확인합니다.

      1. 다음 명령을 자격 증명을 포함하여 실행하고 250-AUTH로 시작하는 줄을 찾습니다.

        swaks --to user@example.com \
              --from support@example.com \
              --auth-user support@example.com \
              --server smtp@example.com:587 \
              -tls-optional \
              --auth-password your-app-password
        
      2. 사용자 정의 이메일 설정 양식에서 지원되는 인증 방법 중 하나를 선택합니다.

잘못된 전달 대상

잘못된 전달 대상이 사용되었다는 오류가 발생할 수 있습니다.

이는 확인 이메일이 사용자 정의 이메일 구성 양식에 표시된 프로젝트별 Service Desk 주소와 다른 이메일 주소로 전달되었을 때 발생합니다.

이를 해결하려면:

  1. 올바른 전달 대상 이메일 주소를 찾습니다.
    • 확인 결과 이메일 또는 확인 프로세스를 트리거한 사용자가 받는 주소를 확인합니다.
    • 사용자 정의 이메일 설정 양식의 이메일 주소로 전달할 Service Desk 이메일 주소에서 주소를 복사합니다.
  2. 모든 이메일을 사용자 정의 이메일 주소로 올바른 대상 이메일 주소로 전달합니다.

사용자 정의 이메일 주소 활성화 또는 비활성화

사용자 정의 이메일 주소가 확인된 후 관리자는 사용자 정의 이메일 주소를 통해 Service Desk 이메일을 보내도록 활성화하거나 비활성화할 수 있습니다.

사용자 정의 이메일 주소를 활성화하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. Service Desk를 확장합니다.
  4. 사용자 정의 이메일 사용 토글을 켭니다. 외부 참가자에 대한 Service Desk 이메일은 SMTP 자격 증명을 사용하여 전송됩니다.

사용자 정의 이메일 주소를 비활성화하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. Service Desk를 확장합니다.
  4. 사용자 정의 이메일 사용 토글을 끕니다. 이메일 전달을 설정했기 때문에 사용자 정의 이메일 주소로의 이메일은 계속 처리되고 프로젝트의 Service Desk 티켓으로 나타납니다.

    외부 참가자에 대한 Service Desk 이메일은 이제 GitLab 인스턴스의 기본 발신 이메일 구성을 사용하여 전송됩니다.

사용자 정의 이메일 구성 변경 또는 제거

사용자 정의 이메일 구성을 변경하려면 이를 재설정하여 제거하고 다시 구성해아 합니다.

프로세스 중 어느 시점에서든 구성을 재설정하려면 사용자 정의 이메일 재설정을 선택합니다. 그러면 자격 증명이 데이터베이스에서 제거됩니다.

사용자 정의 이메일 회신 주소

외부 참가자는 서비스 데스크 티켓에 이메일로 회신할 수 있습니다. GitLab은 티켓과 일치하는 32자 회신 키를 사용하는 이메일 회신 주소를 사용합니다. 사용자 정의 이메일이 구성되면 GitLab에서 회신 주소를 해당 이메일에서 생성합니다.

Google Workspace와 함께 사용자 정의 도메인 설정

Google Workspace를 사용하면 소유한 도메인용 서비스 데스크용 사용자 정의 이메일 주소를 설정할 수 있습니다.

사전 요구 사항:

  • Google Workspace 계정이 이미 있어야 합니다.
  • 테넌트에 대한 새 계정을 만들 수 있어야 합니다.

Google Workspace에서 사용자 정의 서비스 데스크 이메일 주소를 구성하려면 다음을 수행하세요:

  1. Google Workspace 계정 구성.
  2. 이메일 전달 구성.
  3. 사용자 정의 이메일 주소 구성.

Google Workspace 계정 구성

먼저 Google Workspace 계정을 만들고 구성해야 합니다.

Google Workspace에서:

  1. 사용하려는 사용자 정의 이메일 주소에 대한 새 계정을 만듭니다(예: support@example.com).
  2. 해당 계정에 로그인한 후 이중 인증을 활성화합니다.
  3. 앱 비밀번호 생성하여 SMTP 암호로 사용할 수 있도록 합니다. 안전한 위치에 보관하고 문자 사이의 공백을 제거하세요.

그런 다음 이메일 전달 구성해야 합니다.

이메일 전달 구성

다음 단계에서는 GitLab과 Google Workspace 사이를 이동해야 합니다.

GitLab에서:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 서비스 데스크를 확장합니다.
  4. 이메일 전달할 서비스 데스크 이메일 주소 아래의 이메일 주소를 확인합니다.

Google Workspace에서:

  1. 사용자 정의 이메일 양식의 서비스 데스크 주소로 이동하여 전달 및 POP/IMAP 설정 페이지를 엽니다.
  2. 전달 주소 추가를 선택합니다.
  3. 사용자 정의 이메일 양식의 서비스 데스크 주소를 입력합니다.
  4. 다음을 선택합니다.
  5. 입력 내용을 확인한 후 진행을 선택합니다. Google은 서비스 데스크 주소로 이메일을 보내고 확인 코드를 요구합니다.

GitLab에서:

  1. 프로젝트 Issues로 이동하고 Google의 확인 이메일에서 새 이슈가 생성될 때까지 기다립니다.
  2. 이슈를 열고 확인 코드를 확인합니다.
  3. (선택 사항) 이 이슈를 삭제합니다.

Google Workspace에서:

  1. 확인 코드를 입력하고 확인을 선택합니다.
  2. 드롭다운 목록에서 서비스 데스크 주소가 선택되었는지 확인하고 들어오는 메일 사본 전달을 선택합니다.
  3. 페이지 하단에서 변경 사항 저장을 선택합니다.

다음으로, 사용자 정의 이메일 주소 구성을 구성하세요.

사용자 정의 이메일 주소 구성

GitLab에서:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 서비스 데스크를 확장한 후 사용자 정의 이메일 설정을 찾습니다.
  4. 다음 필드를 작성합니다:
    • 사용자 정의 이메일 주소: 사용자 정의 이메일 주소입니다.
    • SMTP 호스트: smtp.gmail.com.
    • SMTP 포트: 587.
    • SMTP 사용자 이름: 사용자 정의 이메일 주소로 미리 작성됩니다.
    • SMTP 비밀번호: 사용자 정의 이메일 계정에 미리 생성한 앱 비밀번호입니다.
    • SMTP 인증 방법: GitLab이 서버에서 지원하는 방법을 선택하도록 합니다(권장).
  5. 저장 및 연결 테스트를 선택합니다.
  6. 검증 프로세스 이후에 사용자 정의 이메일 주소를 활성화할 수 있어야 합니다.

알려진 문제

  • 일부 서비스 제공자는 더 이상 SMTP 연결을 허용하지 않습니다. 대개 사용자 별로 이를 활성화하고 앱 비밀번호를 만들 수 있습니다.
  • Microsoft Exchange는 From 헤더를 유지하지 않으므로 동일한 테넌트의 사용자 정의 이메일을 사용할 수 없습니다. 해결책으로는:
    • GitLab SaaS에서 커스텀 이메일 주소에서 Service Desk 이메일로 이메일을 전달하는 전송 규칙 사용합니다. 현재 테넌트 외부의 이메일 주소로 전달하면 원래의 From 헤더를 보존할 수 있습니다.
    • GitLab self-managed에서는 서비스 데스크 이메일 주소 또는 GitLab 인스턴스 incoming_email 또는 service_desk_email에 대해 다른 서비스 제공자의 하위 도메인 또는 다른 도메인을 사용합니다.

추가 서비스 데스크 별칭 이메일 사용

Tier: Free, Premium, Ultimate Offering: Self-managed

인스턴스용 서비스 데스크에 대한 추가 별칭 이메일 주소를 사용할 수 있습니다.

이를 수행하려면 인스턴스 구성에서 service_desk_email을 구성해야 합니다. 또한 서브 주소 부분의 기본 -issue-를 대체하는 사용자 정의 접미사를 구성할 수 있습니다.

서비스 데스크 별칭 이메일 구성

참고: GitLab.com에서는 이메일 주소로 contact-project+%{key}@incoming.gitlab.com가 이미 구성되어 있습니다. 여전히 프로젝트 설정에서 사용자 정의 접미사를 구성할 수 있습니다.

서비스 데스크는 기본적으로 들어오는 이메일 구성을 사용합니다. 그러나 별도의 서비스 데스크용 이메일 주소가 필요한 경우, 프로젝트 설정에서 service_desk_email사용자 정의 접미사을 구성하세요.

사전 요구 사항:

  • address에는 @ 전에 +%{key} 플레이스홀더가 포함되어야 합니다. 이 플레이스홀더는 이슈를 만들어야 하는 프로젝트를 식별하는 데 사용됩니다.
  • service_desk_emailincoming_email 구성은 항상 서로 다른 메일함을 사용하여 서비스 데스크 이메일이 올바르게 처리되도록 해야 합니다.

IMAP와 함께 서비스 데스크를 위한 사용자 정의 메일박스를 구성하려면 구성 파일에 다음 스니펫을 추가합니다:

Linux 패키지 (Omnibus)

참고: GitLab 15.3 이상에서 서비스 데스크는 옵션으로 webhook (내부 API 호출)을 사용하여 Sidekiq 작업을 큐에 넣는 대신 사용합니다. Linux 패키지 설치에서 GitLab 15.3에서 webhook을 사용하려면 비밀 파일을 생성해야 합니다. 자세한 정보는 merge request 5927를 참조하세요 GitLab 15.4에서는 Linux 패키지 설치 구성을 다시하면 이 비밀 파일이 자동으로 생성되므로 비밀 파일 구성 설정이 필요하지 않습니다. 자세한 내용은 issue 1462를 참조하세요.

gitlab_rails['service_desk_email_enabled'] = true
gitlab_rails['service_desk_email_address'] = "project_contact+%{key}@gmail.com"
gitlab_rails['service_desk_email_email'] = "project_contact@gmail.com"
gitlab_rails['service_desk_email_password'] = "[REDACTED]"
gitlab_rails['service_desk_email_mailbox_name'] = "inbox"
gitlab_rails['service_desk_email_idle_timeout'] = 60
gitlab_rails['service_desk_email_log_file'] = "/var/log/gitlab/mailroom/mail_room_json.log"
gitlab_rails['service_desk_email_host'] = "imap.gmail.com"
gitlab_rails['service_desk_email_port'] = 993
gitlab_rails['service_desk_email_ssl'] = true
gitlab_rails['service_desk_email_start_tls'] = false
직접 컴파일 (소스)
service_desk_email:
  enabled: true
  address: "project_contact+%{key}@example.com"
  user: "project_contact@example.com"
  password: "[REDACTED]"
  host: "imap.gmail.com"
  delivery_method: webhook
  secret_file: .gitlab-mailroom-secret
  port: 993
  ssl: true
  start_tls: false
  log_path: "log/mailroom.log"
  mailbox: "inbox"
  idle_timeout: 60
  expunge_deleted: true

구성 옵션은 들어오는 이메일을 구성하는 것과 동일합니다.

암호화된 자격 증명 사용

서비스 데스크 이메일 자격 증명을 구성 파일에 평문으로 저장하는 대신, 들어오는 이메일 자격 증명에 대해 선택적으로 암호화된 파일을 사용할 수 있습니다.

필수 조건:

  • 암호화된 자격 증명을 사용하려면 먼저 암호화 구성을 활성화해야 합니다.

암호화된 파일에 지원되는 구성 항목은 다음과 같습니다:

  • user
  • password
Linux package(Omnibus)
  1. 처음에 /etc/gitlab/gitlab.rb의 서비스 데스크 구성이 다음과 같았다면:

    gitlab_rails['service_desk_email_email'] = "service-desk-email@mail.example.com"
    gitlab_rails['service_desk_email_password'] = "examplepassword"
    
  2. 암호화된 비밀을 수정합니다:

    sudo gitlab-rake gitlab:service_desk_email:secret:edit EDITOR=vim
    
  3. 서비스 데스크 이메일 비밀의 평문 내용을 입력하세요:

    user: "service-desk-email@mail.example.com"
    password: "examplepassword"
    
  4. /etc/gitlab/gitlab.rb를 편집하고 service_desk 설정의 emailpassword를 제거합니다.
  5. 파일을 저장하고 GitLab을 다시 구성하세요:

    sudo gitlab-ctl reconfigure
    
Helm 차트(Kubernetes)

서비스 데스크 이메일 비밀을 저장하는 데 Kubernetes secret을 사용하십시오. 자세한 내용은 Helm IMAP secrets을 참조하십시오.

Docker
  1. 처음에 docker-compose.yml의 서비스 데스크 구성이 다음과 같았다면:

    version: "3.6"
    services:
      gitlab:
        image: "gitlab/gitlab-ee:latest"
        restart: always
        hostname: "gitlab.example.com"
        environment:
          GITLAB_OMNIBUS_CONFIG: |
            gitlab_rails['service_desk_email_email'] = "service-desk-email@mail.example.com"
            gitlab_rails['service_desk_email_password'] = "examplepassword"
    
  2. 컨테이너 내부로 이동하고 암호화된 비밀을 수정합니다:

    sudo docker exec -t <container_name> bash
    gitlab-rake gitlab:service_desk_email:secret:edit EDITOR=editor
    
  3. 서비스 데스크 비밀의 평문 내용을 입력하세요:

    user: "service-desk-email@mail.example.com"
    password: "examplepassword"
    
  4. docker-compose.yml을 편집하고 service_deskemailpassword 설정을 삭제합니다.
  5. 파일을 저장하고 GitLab을 다시 시작하세요:

    docker compose up -d
    
Self-compiled (source)
  1. 처음에 /home/git/gitlab/config/gitlab.yml의 서비스 데스크 구성이 다음과 같았다면:

    production:
      service_desk_email:
        user: "service-desk-email@mail.example.com"
        password: "examplepassword"
    
  2. 암호화된 비밀을 수정합니다:

    bundle exec rake gitlab:service_desk_email:secret:edit EDITOR=vim RAILS_ENVIRONMENT=production
    
  3. 서비스 데스크 비밀의 평문 내용을 입력하세요:

    user: "service-desk-email@mail.example.com"
    password: "examplepassword"
    
  4. /home/git/gitlab/config/gitlab.yml을 편집하고 service_desk_email:userpassword 설정을 제거합니다.
  5. 파일을 저장하고 GitLab 및 Mailroom을 다시 시작합니다.

    # systemd를 실행 중인 시스템의 경우
    sudo systemctl restart gitlab.target
    
    # SysV init를 실행 중인 시스템의 경우
    sudo service gitlab restart
    

Microsoft Graph

service_desk_email은 Microsoft Graph API를 사용하여 IMAP 대신 Microsoft Exchange Online 메일함을 읽도록 구성할 수 있습니다. Microsoft Graph을 위해 OAuth 2.0 응용 프로그램을 들어오는 이메일과 동일한 방식으로 설정하세요.

Linux package(Omnibus)
  1. /etc/gitlab/gitlab.rb를 편집하고 원하는 값을 대체하여 다음 줄을 추가합니다:

    gitlab_rails['service_desk_email_enabled'] = true
    gitlab_rails['service_desk_email_address'] = "project_contact+%{key}@example.onmicrosoft.com"
    gitlab_rails['service_desk_email_email'] = "project_contact@example.onmicrosoft.com"
    gitlab_rails['service_desk_email_mailbox_name'] = "inbox"
    gitlab_rails['service_desk_email_log_file'] = "/var/log/gitlab/mailroom/mail_room_json.log"
    gitlab_rails['service_desk_email_inbox_method'] = 'microsoft_graph'
    gitlab_rails['service_desk_email_inbox_options'] = {
      'tenant_id': '<YOUR-TENANT-ID>',
      'client_id': '<YOUR-CLIENT-ID>',
      'client_secret': '<YOUR-CLIENT-SECRET>',
      'poll_interval': 60  # Optional
    }
    
Helm 차트(Kubernetes)
  1. Helm IMAP secrets을 만드는 과정:

    kubectl create secret generic service-desk-email-client-secret --from-literal=secret=<YOUR-CLIENT_SECRET>
    
  2. GitLab 서비스 데스크 이메일 인증 토큰을 위한 Helm IMAP secrets를 만드세요. <name>은 GitLab 설치의 Helm release name으로 대체하십시오:

    kubectl create secret generic <name>-service-desk-email-auth-token --from-literal=authToken=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32 | base64)
    
  3. Helm 값 내보내기:

    helm get values gitlab > gitlab_values.yaml
    
  4. gitlab_values.yaml을 편집합니다:

    global:
      appConfig:
      serviceDeskEmail:
        enabled: true
        address: "project_contact+%{key}@example.onmicrosoft.com"
        user: "project_contact@example.onmicrosoft.com"
        mailbox: inbox
        inboxMethod: microsoft_graph
        azureAdEndpoint: https://login.microsoftonline.com
        graphEndpoint: https://graph.microsoft.com
        tenantId: "YOUR-TENANT-ID"
        clientId: "YOUR-CLIENT-ID"
        clientSecret:
          secret: service-desk-email-client-secret
          key: secret
        deliveryMethod: webhook
        authToken:
          secret: <name>-service-desk-email-auth-token
          key: authToken
    
  5. 파일을 저장하고 새 값들을 적용하세요:

    helm upgrade -f gitlab_values.yaml gitlab gitlab/gitlab
    
Docker
  1. docker-compose.yml을 편집합니다:

    version: "3.6"
    services:
      gitlab:
        environment:
          GITLAB_OMNIBUS_CONFIG: |
            gitlab_rails['service_desk_email_enabled'] = true
            gitlab_rails['service_desk_email_address'] = "project_contact+%{key}@example.onmicrosoft.com"
            gitlab_rails['service_desk_email_email'] = "project_contact@example.onmicrosoft.com"
            gitlab_rails['service_desk_email_mailbox_name'] = "inbox"
            gitlab_rails['service_desk_email_log_file'] = "/var/log/gitlab/mailroom/mail_room_json.log"
            gitlab_rails['service_desk_email_inbox_method'] = 'microsoft_graph'
            gitlab_rails['service_desk_email_inbox_options'] = {
              'tenant_id': '<YOUR-TENANT-ID>',
              'client_id': '<YOUR-CLIENT-ID>',
              'client_secret': '<YOUR-CLIENT-SECRET>',
              'poll_interval': 60  # Optional
            }
    
  2. 파일을 저장하고 GitLab을 다시 시작하세요:

    docker compose up -d
    
Self-compiled (source)
  1. /home/git/gitlab/config/gitlab.yml을 편집합니다:

    service_desk_email:
      enabled: true
      address: "project_contact+%{key}@example.onmicrosoft.com"
      user: "project_contact@example.onmicrosoft.com"
      mailbox: "inbox"
      delivery_method: webhook
      log_path: "log/mailroom.log"
      secret_file: .gitlab-mailroom-secret
      inbox_method: "microsoft_graph"
      inbox_options:
        tenant_id: "<YOUR-TENANT-ID>"
        client_id: "<YOUR-CLIENT-ID>"
        client_secret: "<YOUR-CLIENT-SECRET>"
        poll_interval: 60 # Optional
    

서비스 데스크 별칭 이메일에 접미사 구성

프로젝트의 서비스 데스크 설정에서 사용자 정의 접미사를 설정할 수 있습니다.

접미사는 소문자(a-z), 숫자(0-9), 또는 밑줄(_)만 포함할 수 있습니다.

구성된 경우, 사용자 정의 접미사는 service_desk_email_address 설정과 다음 형식의 키로 구성된 새로운 서비스 데스크 이메일 주소를 생성합니다: <프로젝트_전체_경로>-<사용자_정의_접미사>

필수 사항:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 서비스 데스크를 확장합니다.
  4. 이메일 주소 접미사 아래에 사용할 접미사를 입력합니다.
  5. 변경 사항 저장을 선택합니다.

예를 들어, mygroup/myproject 프로젝트의 서비스 데스크 설정이 다음과 같이 구성된 경우:

  • 이메일 주소 접미사가 support로 설정됨.
  • 서비스 데스크 이메일 주소가 contact+%{key}@example.com으로 구성됨.

해당 프로젝트의 서비스 데스크 이메일 주소는 다음과 같습니다: contact+mygroup-myproject-support@example.com. incoming email 주소는 여전히 작동합니다.

사용자 정의 접미사를 구성하지 않으면, 프로젝트 식별에 기본 프로젝트 식별이 사용됩니다.

다중 노드 환경에서 이메일 흡수 구성

다중 노드 환경은 확장성, 장애 허용성 및 성능 이유로 여러 서버에서 GitLab을 실행하는 설정입니다.

GitLab은 mail_room이라는 별도의 프로세스를 사용하여 incoming_emailservice_desk_email 메일함에서 새로운 읽지 않은 이메일을 흡수합니다.

Helm 차트 (Kubernetes)

GitLab Helm 차트는 여러 하위 차트로 구성되며, 그 중 하나가 Mailroom 하위 차트입니다. 공통 설정을 구성하고 incoming_emailservice_desk_email를 위한 공통 설정을 구성하세요.

Linux 패키지 (Omnibus)

다중 노드 Linux 패키지 설치 환경에서는 mail_room을 하나의 노드에서만 실행합니다. 그것을 단일 rails 노드 (예: application_role) 또는 완전히 분리된 곳에서 실행합니다.

모든 노드 설정

  1. 웹 UI 및 생성된 이메일에서 이메일 주소를 렌더링하기 위해 모든 노드에 incoming_emailservice_desk_email을 위한 기본 구성을 추가합니다.

    /etc/gitlab/gitlab.rb에서 incoming_email 또는 service_desk_email 섹션을 찾습니다.

    incoming_email
    gitlab_rails['incoming_email_enabled'] = true
    gitlab_rails['incoming_email_address'] = "incoming+%{key}@example.com"
    
    service_desk_email
    gitlab_rails['service_desk_email_enabled'] = true
    gitlab_rails['service_desk_email_address'] = "project_contact+%{key}@example.com"
    
  2. GitLab은 mail_room에서 GitLab 애플리케이션으로 이메일을 전송하기 위해 두 가지 메서드를 제공합니다. 각 이메일 설정에 대해 delivery_method를 개별적으로 구성할 수 있습니다:

    1. 권장: webhook (GitLab 15.3 이후 기본)은 이메일 페이로드를 GitLab 애플리케이션으로 API POST 요청을 통해 보냅니다. 인증을 위해 공유 토큰을 사용합니다. 이 방법을 선택하면 mail_room 프로세스가 API 엔드포인트에 액세스하고 공유 토큰을 모든 애플리케이션 노드에 분배할 수 있도록 확인합니다.

      incoming_email
      gitlab_rails['incoming_email_delivery_method'] = "webhook"
      
      # mail_room이 연락할 URL입니다. 내부 URL 또는 IP를 사용할 수도 있지만, mail_room이 해당 주소를 통해 GitLab API에 액세스할 수 있도록 확인합니다.
      # "/"로 끝나지 않도록 합니다.
      gitlab_rails['incoming_email_gitlab_url'] = "https://gitlab.example.com"
      
      # 임의 토큰이 포함되어야 하는 공유 비밀 파일입니다. 모든 노드에서 동일한지 확인하세요.
      gitlab_rails['incoming_email_secret_file'] = ".gitlab_mailroom_secret"
      
      service_desk_email
      gitlab_rails['service_desk_email_delivery_method'] = "webhook"
      
      # mail_room이 연락할 URL입니다. 내부 URL 또는 IP를 사용할 수도 있지만, mail_room이 해당 주소를 통해 GitLab API에 액세스할 수 있도록 확인합니다.
      # "/"로 끝나지 않도록 합니다.
      gitlab_rails['service_desk_email_gitlab_url'] = "https://gitlab.example.com"
      
      # 임의 토큰이 포함되어야 하는 공유 비밀 파일입니다. 모든 노드에서 동일한지 확인하세요.
      gitlab_rails['service_desk_email_secret_file'] = ".gitlab_mailroom_secret"
      
    2. GitLab 16.0에서 폐기되고 17.0에서 제거될 예정: webhook 설정에 문제가 있는 경우, Redis를 사용하여 이메일 페이로드를 직접 GitLab Sidekiq에 전달하기 위해 sidekiq를 사용하세요.

      incoming_email
      # Redis 구성을 사용하여 Sidekiq 작업을 직접 추가합니다.
      gitlab_rails['incoming_email_delivery_method'] = "sidekiq"
      
      service_desk_email
      # Redis 구성을 사용하여 Sidekiq 작업을 직접 추가합니다.
      gitlab_rails['service_desk_email_delivery_method'] = "sidekiq"
      
  3. 이메일 흡수를 실행하지 않아야 하는 모든 노드에서 mail_room을 비활성화합니다. 예: /etc/gitlab/gitlab.rb에서:

    mailroom['enable'] = false
    
  4. 변경 사항이 적용되려면 GitLab을 다시 구성합니다.

단일 이메일 수집 노드 설정

모든 노드를 설정한 후에 mail_room 프로세스를 비활성화하고 단일 노드에서 mail_room을 활성화합니다. 이 노드는 일정한 주기로 incoming_emailservice_desk_email의 메일함을 폴링하여 새로운 읽지 않은 이메일을 GitLab으로 이동시킵니다.

  1. 추가로 이메일 수신을 처리하는 기존 노드를 선택합니다.
  2. 입력 이메일 및 서비스 데스크 이메일의 전체 구성 및 자격 증명을 추가합니다.
  3. 이 노드에서 mail_room을 활성화합니다. 예를 들어, /etc/gitlab/gitlab.rb에서 다음과 같이 설정합니다:

    mailroom['enable'] = true
    
  4. 변경 사항이 적용되려면 이 노드에서 GitLab을 다시 구성합니다.