NiFi 의 메일 발송은 PutEmail 프로세서가 담당한다. 운영 플로우(UpdateAttribute → ReplaceText → PutEmail) 를 건드리지 않고 한 번만 발송해 보는 방법과, 본문 · 제목에 쓰인 ${user} 같은 속성이 어디서 정의되는지 찾는 방법을 정리한다.
| 구분 | 속성 | 값 |
|---|---|---|
| SMTP | SMTP Hostname / Port | 사내 릴레이 또는 외부 SMTP. 25(평문) · 587(STARTTLS) · 465(SSL) |
| SMTP | SMTP Auth / Username / Password | 인증이 필요할 때. 비밀번호는 Parameter Context 의 Sensitive 파라미터 #{smtp.password} 로 참조 |
| SMTP | SMTP TLS(STARTTLS) | 587 이면 true |
| SMTP | SMTP Socket Factory | 465 이면 javax.net.ssl.SSLSocketFactory |
| 내용 | From / To / CC / BCC | 콤마로 다중 지정. Expression Language 사용 가능 |
| 내용 | Subject / Message / Content Type | text/plain 또는 text/html |
| 내용 | Attach File | FlowFile 내용을 첨부할지 |
| 디버그 | Include All Attributes In Message | 속성 전체를 본문에 포함 |
사내 릴레이가 IP 기반 인증이면 SMTP Auth 를 false 로 두고 계정을 생략한다. 비밀번호를 프로세서에 직접 넣으면 flow.json 에 남으므로 Parameter Context 를 쓴다.
운영 PutEmail 에 직접 연결하면 To 에 설정된 실제 수신자에게 메일이 나간다. 세 프로세서를 복사해 사본을 만들고 앞에 GenerateFlowFile 을 붙인다.
[GenerateFlowFile] → [UpdateAttribute] → [ReplaceText] → [PutEmail] (사본)
success / failure 를 auto-terminate 해야 프로세서가 Valid 상태가 된다.${user} 처럼 참조되는 속성은 GenerateFlowFile 의 Custom Properties 에 user = 테스트값 으로 넣는다.속성은 FlowFile 에 실려 끝까지 전파되므로 한 번만 정의하면 중간 프로세서마다 다시 적을 필요가 없다. 예외는 UpdateAttribute 의 Delete Attributes Expression 에 매칭되는 경우뿐이다.
외부로 실제 메일을 보내지 않고 포맷만 검증하려면 smtp4dev 나 MailHog 를 localhost:25 로 띄우고 Hostname=localhost, Auth=false 로 둔다.
user 를 입력하면 속성 이름과 값까지 검색돼 정의 · 참조 프로세서가 모두 뜬다. 속성을 만드는 프로세서는 UpdateAttribute, EvaluateJsonPath, ExtractText, 소스 프로세서(filename 등) 정도로 정해져 있다.logs/nifi-app.log 의 PutEmail 라인