Note

CentOS 메일서버 설정 및 자바에서 메일 발송하기 본문

Dev/Etc

CentOS 메일서버 설정 및 자바에서 메일 발송하기

레모네모 2019. 11. 24. 15:55

CentOS 메일서버 설정

sendmail 관련 패키지 설치

sendmail, sendmail-cf, sendmail-devel 패키지를 설치한다.

표준 패키지

sendmail - 메일 전송 에이전트

추가 패키지

sendmail-cf - sendmail을 재설정 하는데 필요한 파일들
sendmail-devel

설치

yum install sendmail sendmail-cf sendmail-devel

sendmail 설정

sendmail은 로컬에서만 메일을 발송하도록 하는데, 릴레이 설정을 하고, 메일 클라이언트를 통해서 발송할 수 있도록 아래와 같이 설정을 바꾼다.

/etc/mail/sendmail.mc

52: TRUST_AUTH_MECH('EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') dnl
53: define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') dnl
116: dnl DAEMON_OPTIONS('Port=smtp,Name=MTA') dnl

위 파일을 통해 sendmail.cf 파일을 생성한다.

m4 sendmail.mc > sendmail.cf

sendmail 서비스 시작

service start sendmail
chkconfig --level 2345 sendmail on

아래 설정은 부팅 시 실행되도록 설정하는 것이다.

sendmail access 수정

access권한을 수정한다.

/etc/mail/access

.
.
.
Connect:192.168.0         RELAY

서비스를 재시작 한다.

service sendmail restart

자바 설정

dependency

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</articactId>
  <version>version</version>
</dependency>

(spring 기준)

// 환경정보 설정
// 메일서버 주소를 IP 또는 도메인 명으로 지정
Properties props = System.getProperties();
props.setProperty("mail.smtp.host", "127.0.0.1");
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setJavaMailProperties(props);

try {
  final MimeMessage mimeMessage = javaMailSender.createMimeMessage();
  boolean html = false;
  MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, Charsets.UTF_8.displayName());
  helper.setFrom(new InternetAddress("test.from@test.com", "test from"));
  helper.setTo("test.to@test.com");
  helper.setSubject("Subject");

  if (MailContentType.HTML.equals(MailContentType.HTML)) {
    html = true;
  }

  helper.setText("Mail Content", html);

  List<String> attachList = new ArrayList<>();
  attachList.add("Attach File Path1");
  attachList.add("Attach File Path2");

  for (final String attach : attachList) {
    final File file = new File(attach);

    if (file.exists()) {
      helper.addAttachment(file.getName(), file);
    }
  }

  javaMailSender.send(mimeMessage);
} catch (Exception e) {
  e.printStackTrace(System.err);
}

'Dev > Etc' 카테고리의 다른 글

Clean Code  (0) 2019.11.24
Nginx Loadbalance 설정  (0) 2019.11.24
Docker Iptables 오류  (0) 2019.11.24
Docker Container  (0) 2019.11.24
Docker 기본 사용법  (0) 2019.11.24
Comments