2017-04-07 1 views
0

내 서버에 공용 IP가 2 개 있다고 가정 할 때 Ruby가 첫 번째 IP를 사용하여 SMTP 프로토콜을 통해 전자 메일을 보낸 다음 두 번째 IP를 사용하는 단계는 무엇입니까?다른 공용 IP를 사용하여 SMTP를 통해 전자 메일 보내기

local_host 옵션을 지정하는 TCPSocket 옵션을 알고 있지만 SMTP와 비슷한 항목을 찾을 수없고 이미 빌드 된 소켓을 허용하는 생성자 옵션을 찾을 수 없습니다.

답변

1

당신은 클래스가 새로운 소켓을 생성하는 개인 tcp_socket 방법이있는 루비 표준 라이브러리의 순 :: SMTP 클래스의 소스 코드를 볼 수 있습니다

def tcp_socket(address, port) 
    TCPSocket.open address, port 
end 

당신은 Net::SMTP 및 재정의 하위 클래스 수 그 방법은 다른 것을 돌려 주거나, 당신이 뭔가 빠르거나 더러운 것을 원한다면 원숭이 - 패치를하십시오. (instance_variable_set를 사용하여) 직접 @socket instance_variable을 설정하면 효과가 있을까 하지 것을

참고; 이름에도 불구하고이 인스턴스 변수는 일반 Socket 인스턴스를 보유하지 않고 클래스 Net::InternetMessageIO의 래퍼 객체를 보유합니다.이 객체 자체는 객체를 래핑하는 OpenSSL::SSL::Socket 객체를 래핑 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 또한 다음을 발견했다 : https://ruby-doc.org/stdlib-2.3.3/libdoc/net/smtp/rdoc/Net/SMTP.html#class-Net::SMTP-label-HELO+domain this 속임수를 써? 당신이 실제로 HELO 도메인을 통해 IP 주소를 설정할 수 있지만 링크 된 소스를 기반으로, 실제로 지정한 IP 주소를 사용하지 않는 도메인을 선언하는 데 사용되는 것 같습니다 –

+0

그래, 내 이해를 기반으로 HELO 도메인은 명목상의 "이 메시지는 어디에서 왔습니까?" "네트워크 인터페이스를 통해 패킷을 전송해야합니까?"와 같은 전송 계층 질문과는 아무런 관련이 없습니다. 즉, 당신은 확실히 그것을 시도하고 볼 수 있습니다. – philomory

+0

그래, 아마도 최고의 옵션은 서브 클래 싱이다. –

관련 문제