У меня есть сценарий, в котором у меня есть:
Сервер M, A и B находятся в одной и той же сети LAN, это означает, что даже когда интернет-соединения IA и IB разрываются, связь между M & A и M & B не обязательно прерывается, поэтому я не могу использовать опцию Postfix smtp_fallback_relay для этого.
Теперь мне нужно, чтобы сервер M отправлял только на сервер, который будет иметь подключение к Интернету во время ретрансляции на него.
Как мы можем сделать это лучше всего?
Что мы пробовали
Мы с коллегой поделились двумя альтернативами (не исчерпывающими):
Оба эти варианта работают по большей части, мне нужно, почему они не будут работать (есть ли опасность использовать один из них)?
Проблема для обоих подходов гоночное состояние, то есть ваш Интернет работал. A или B подтверждают успешную доставку им, но, когда A или B пытались переслать его в Интернет, соединение пропало.
Вышеупомянутый сценарий был возможен из-за того, как электронная почта течет в postfix.
Email from client ---> Received ---> Queued -> Sent
Postfix на сервере A отправит подтверждение M, что письмо было принято A, когда электронное письмо было поставлено в очередь. Таким образом, возможно, когда postfix попытается отправить электронное письмо в Интернет, соединение прервется, и ваша электронная почта будет поставлена в очередь, пока соединение не будет восстановлено.
Примечание. Такое поведение было ожидаемым в типичном MTA. Помните, что SMTP хранить и пересылать протокол.