본문 바로가기

일상

서버를 같은 IP로 장비만 바꿀 때 놓치기 쉬운 것 (로컬 메일 릴레이와 장비에 묶인 설정)

반응형

노후 서버를 새 장비로 바꾸면서 IP는 그대로 옮기는 경우, 겉으로는 아무것도 안 바뀐 것 같아도 조용히 끊기기 쉬운 것들을 점검하는 방법입니다.


장비 교체를 IP 그대로 진행하면 편한 점이 많습니다. 방화벽 정책도, 다른 서버의 접속 설정도, 연동 기관에 등록한 주소도 바꿀 필요가 없습니다. 그래서 "애플리케이션만 옮기면 끝"이라고 생각하기 쉽습니다.


그런데 IP는 따라와도 옛 장비 안에 깔려 있던 것들은 따라오지 않습니다. 그중 가장 늦게 발견되는 게 메일입니다. 애플리케이션이 자기 서버의 메일 프로그램에 메일을 맡기고 있었다면, 새 장비에는 그 프로그램이 없어서 오류 없이 메일만 사라질 수 있습니다.


- 애플리케이션이 localhost:25 로 메일을 보내고 있다면 장비 안의 메일 프로그램(sendmail, postfix) 에 기대고 있는 것이다

- 새 장비의 OS 기본 설치에는 메일 프로그램이 없거나 꺼져 있는 경우가 많다

- 메일 발송 실패는 예외가 로그 한 줄로 묻히기 쉬워서 며칠 뒤 민원으로 드러난다

- 옮기기 전에 옛 장비에서 무엇이 25번 포트를 쓰는지 먼저 확인한다


1. 로컬 메일 릴레이가 무엇인가

애플리케이션에서 메일을 보내는 방법은 크게 두 가지입니다. 외부 메일 서비스에 아이디와 비밀번호로 접속해 보내거나, 자기 서버에 깔린 메일 프로그램에 넘기는 방식입니다.


두 번째 방식에서는 설정에 메일 서버 주소가 localhost 나 127.0.0.1 로 적혀 있습니다. 애플리케이션은 같은 장비의 25번 포트에 메일을 넘기고, 실제 바깥으로 보내는 일은 sendmail이나 postfix 같은 프로그램이 맡습니다. 이것을 흔히 로컬 릴레이라고 부릅니다.


오래된 서버일수록 이 방식이 많습니다. 처음 구축할 때 OS와 함께 메일 프로그램이 깔려 있었고, 인증 설정 없이 바로 쓸 수 있었기 때문입니다.


2. 왜 장비를 바꾸면 끊기는가

IP를 그대로 붙인 새 장비는 네트워크 입장에서는 같은 서버지만, 안에 설치된 프로그램은 완전히 새것입니다. 요즘 서버 OS는 기본 설치에 메일 프로그램을 넣지 않거나 넣어도 꺼 두는 경우가 많아서, 애플리케이션이 25번 포트에 접속하면 연결이 거부됩니다.


문제는 이 실패가 눈에 잘 띄지 않는다는 점입니다. 메일 발송은 보통 부가 기능이라 실패해도 화면은 정상으로 넘어가고, 예외는 로그에 한 줄 남고 끝납니다. 비밀번호 찾기 메일이나 알림 메일이 안 왔다는 민원이 들어와서야 알게 되는 경우가 많습니다.


3. 옮기기 전에 옛 장비에서 확인하기

교체 작업 전에 옛 장비에서 메일 프로그램이 실제로 쓰이고 있는지부터 확인합니다. 25번 포트를 누가 열고 있는지, 애플리케이션 설정에 로컬 주소가 있는지, 메일 로그에 최근 발송 기록이 있는지 보면 됩니다.



여기서 하나라도 걸리면 그 서버는 로컬 릴레이를 쓰고 있는 것입니다. 메일 프로그램 설정에 바깥으로 넘기는 상위 메일 서버(relayhost, SMART_HOST) 가 따로 지정돼 있다면 그 값도 같이 기록해 둬야 새 장비에서 똑같이 맞출 수 있습니다.


4. 새 장비에서 선택지 두 가지

첫째는 새 장비에도 메일 프로그램을 설치하고 옛 장비와 같은 설정으로 맞추는 방법입니다. 애플리케이션을 건드리지 않아도 되지만, 장비가 바뀔 때마다 같은 일을 반복해야 합니다.


둘째는 이번 기회에 외부 메일 발송 서비스로 바꾸는 방법입니다. 애플리케이션 설정에서 메일 서버 주소와 인증 정보를 바꿔야 하지만, 이후로는 장비와 상관없이 메일이 나갑니다. 클라우드 메일 서비스를 쓴다면 인증 정보를 만드는 방식이 헷갈리기 쉬운데, AWS SES 535 오류 글에 그 부분을 정리해 두었습니다.


어느 쪽이든 교체 직후에는 반드시 실제로 한 통을 보내 봐야 합니다.



5. 메일 말고도 장비에 묶여 있는 것들

메일과 같은 이유로, IP가 아니라 장비 자체에 붙어 있던 것들은 한 번에 점검해 두는 편이 좋습니다.


- 예약 작업: 옛 장비의 crontab 이 그대로 옮겨졌는지

- 마운트: 공유 저장소(NAS)가 새 장비에서도 같은 경로로 붙는지

- 폰트: 한글 PDF나 이미지를 만드는 기능이 있다면 폰트가 깔려 있는지

- 라이선스: 장비 고유값(MAC 주소 등)에 묶인 상용 소프트웨어가 있는지

- SSH 호스트 키: 다른 서버가 이 서버에 접속할 때 키가 바뀌었다는 경고로 자동화 작업이 멈추지 않는지


6. 정리

IP를 그대로 옮기는 장비 교체는 네트워크 쪽 변경이 없어서 편하지만, 장비 안에 깔려 있던 것들은 하나도 따라오지 않습니다. 그중 로컬 메일 릴레이는 실패해도 티가 안 나서 가장 늦게 발견됩니다.


옮기기 전에 옛 장비에서 25번 포트와 메일 로그를 확인하고, 새 장비에서는 실제로 한 통을 보내 보는 것까지 작업 목록에 넣어 두면 교체 뒤 민원을 막을 수 있습니다.


여기까지 같은 IP로 서버 장비를 바꿀 때 놓치기 쉬운 것에 대해서 작성해봤습니다. 여기까지 읽어주셔서 감사합니다!

반응형