BLOG main image

분류 전체보기 (321)
free (36)
영화 (85)
드라마 (21)
게임 (28)
만화/책 (34)
개발 (46)
IT (68)
연예 (3)
Visitors up to today!
Today hit, Yesterday hit
TETRIS
rss
2014. 2. 7. 13:15

회사에서 redmine 과 Microsoft 의 Exchange Server 를 연결할 일이 생겼다.


우선, config/configuration.yml 파일의 E-Mail 설정 기본 sample 은 아래와 같다.


production:

   email_delivery:

     delivery_method: :smtp

     smtp_settings:

       address: "example.com"

       port: 25

       authentication: :login

       domain: 'foo.com'

       user_name: 'myaccount'

       password: 'password'


특별할게 없는 일반적인 smtp 설정


하지만, 특별할게 없다고 설정하는대로 잘 작동되면 그건 redmine 이 아니지.


당연히 메일은 오지 않았다. SAD ~


log/production.log 를 살펴보니,


Email delivery error: 504 5.7.4 Unrecognized authentication type


인식할 수 없는 인증 방식이라는거다.


이게 참 미칠 노릇인게...

위에 sample 을 보면 알겠지만,


authentication: :login


이게 인증 방식을 설정하는 전부이다.

로그인 해야 되는데 login 말고 뭘 쓰란말야-_-;


그래서 혹시나 보안 설정의 문제인가 싶어서, configuration.yml 에다가 아래 문장을 추가해봤다.


tls: true


그랬더니!


오라는 메일은 안오고...

Email delivery error: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol


에러가 더 길어졌다. -_-


혹시나 해서,

enable_starttls_auto: true 설정도 추가...!


Email delivery error: 535 5.7.3 Authentication unsuccessful


다시 짧아지긴 했지만...

역시나 fail -_-



메일 서버가 대체 무슨 일을 꾸미고 있는건가 싶어서 

telnet 으로 메일 서버 25 번 포트에 접속해서 EHLO 를 날려보니,


EHLO

250-SIZE

250-PIPELINING

250-DSN

250-ENHANCEDSTATUSCODES

250-X-ANONYMOUSTLS

250-AUTH NTLM

250-X-EXPS GSSAPI NTLM

250-8BITMIME

250-BINARYMIME

250-CHUNKINGl

250-XEXCH50

250-XRDST

250 XSHADOW


뭔가 불길한 "AUTH NTLM" 이라는 단어가 보인다.


아아~ 좋지 않아...


ntlm 을 찾아보니, Microsoft 의 Exchange Server 의 인증을 위해 사용되는 방식인데...


redmine 의 인증 방식 기본 값은 login, plain, 그리고 md5 이렇게 밖에 없었다. 


구글링을 한참 해보니까, rubyntlm 이라는게 있는 것이 아닌가?


바로 설치!


# gem install rubyntlm


그리고, :authentication => :ntlm 으로 변경!!!!



기대감을 가지고 실행했지만... 


또 다시 fail 



이렇게 몇 시간 넘게 삽질을 한 후에야 이유를 알았다.


rubyntlm 말고, ruby-ntlm 이 있다 -_-;;;;;


그걸로 하니까 된다.


최종 설정은 아래와 같다.


설치

# gem install ruby-ntlm

# bundle install


설정

- config/environment.rb 

require File.expand_path('../application', __FILE__) 아래 쪽에 

require 'ntlm/smtp'  추가


- config/configuration.yml 

:authentication => :ntlm



아니 이런...


써놓고 보니까 간단하잖아 -_-;