diff --git a/internal/frontend/grpc/service_methods.go b/internal/frontend/grpc/service_methods.go index c63203c6..e0f27b2b 100644 --- a/internal/frontend/grpc/service_methods.go +++ b/internal/frontend/grpc/service_methods.go @@ -670,12 +670,7 @@ func (s *Service) SetMailServerSettings(_ context.Context, settings *ImapSmtpSet } } - _ = s.SendEvent(NewMailServerSettingsChangedEvent(&ImapSmtpSettings{ - ImapPort: int32(s.bridge.GetIMAPPort()), - SmtpPort: int32(s.bridge.GetSMTPPort()), - UseSSLForImap: s.bridge.GetIMAPSSL(), - UseSSLForSmtp: s.bridge.GetSMTPSSL(), - })) + _ = s.SendEvent(NewMailServerSettingsChangedEvent(s.getMailServerSettings())) return &emptypb.Empty{}, nil } @@ -744,3 +739,12 @@ func base64Decode(in []byte) ([]byte, error) { return out[:n], nil } + +func (s *Service) getMailServerSettings() *ImapSmtpSettings { + return &ImapSmtpSettings{ + ImapPort: int32(s.bridge.GetIMAPPort()), + SmtpPort: int32(s.bridge.GetSMTPPort()), + UseSSLForImap: s.bridge.GetIMAPSSL(), + UseSSLForSmtp: s.bridge.GetSMTPSSL(), + } +} diff --git a/internal/frontend/grpc/service_user.go b/internal/frontend/grpc/service_user.go index b54b3fb7..45fb1119 100644 --- a/internal/frontend/grpc/service_user.go +++ b/internal/frontend/grpc/service_user.go @@ -131,10 +131,17 @@ func (s *Service) RemoveUser(ctx context.Context, userID *wrapperspb.StringValue func (s *Service) ConfigureUserAppleMail(ctx context.Context, request *ConfigureAppleMailRequest) (*emptypb.Empty, error) { s.log.WithField("UserID", request.UserID).WithField("Address", request.Address).Debug("ConfigureUserAppleMail") + sslWasEnabled := s.bridge.GetSMTPSSL() + if err := s.bridge.ConfigureAppleMail(request.UserID, request.Address); err != nil { s.log.WithField("userID", request.UserID).Error("Cannot configure AppleMail for user") return nil, status.Error(codes.Internal, "Apple Mail config failed") } + if s.bridge.GetSMTPSSL() != sslWasEnabled { + // we've changed SMTP SSL settings. This will happen if SSL was off and macOS >= Catalina. We must inform gRPC clients. + _ = s.SendEvent(NewMailServerSettingsChangedEvent(s.getMailServerSettings())) + } + return &emptypb.Empty{}, nil }