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


1. CentOS 메일서버 설정

1.1. sendmail 관련 패키지 설치

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

표준 패키지

sendmail - 메일 전송 에이전트

추가 패키지

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

설치

yum install sendmail sendmail-cf sendmail-devel

1.2. 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

1.3. sendmail 서비스 시작

service start sendmail
chkconfig --level 2345 sendmail on

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

1.4. sendmail access 수정

access권한을 수정한다.

/etc/mail/access

.
.
.
Connect:192.168.0         RELAY

서비스를 재시작 한다.

service sendmail restart

2. 자바 설정

2.1. 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("dev.nuti0102@gmail.com", "HyeonilJeong"));
  helper.setTo("nuti0102@gmail.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);
}