2016-11-09 9 views
2

Я использую java, чтобы попытаться отправить электронное письмо. Это работало в недавнем прошлом, и ни один код с отправкой электронных писем не изменился. В настоящее время я получаю следующую трассировку стеки, когда я пытаюсь отправить по электронной почте от моего кода:Не удается отправить электронное письмо, в соответствии с postfix fatal: невозможно определить ограничение на доступ к файлам

com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 25; timeout -1; 
    nested exception is: 
    java.net.ConnectException: Connection refused 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1984) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:656) 
    at javax.mail.Service.connect(Service.java:345) 
    at javax.mail.Service.connect(Service.java:226) 
    at javax.mail.Service.connect(Service.java:175) 
    at javax.mail.Transport.send0(Transport.java:253) 
    at javax.mail.Transport.send(Transport.java:124) 
    at com.someMachine.email.SmtpHandlerMailer.send(SmtpHandlerMailer.java:616) 
    at com.someMachine.business.doSomething(InMyCode.java:648) 
    at com.someMachine.resource.someEmailResource.sendEmail(someEmailResource.java:49) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) 
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) 
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) 
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) 
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:308) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) 
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:291) 
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1140) 
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:403) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:334) 
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436) 
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at java.net.Socket.connect(Socket.java:538) 
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:301) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:229) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1950) 
    ... 54 more 

Я думаю, что я сузил его до суффикса не запускать на моей машине. Как недавно, как несколько недель назад отправка почты таким образом была в порядке.

У меня есть, начиная с macOS 10.9, изменилась конфигурация плагина startctl, чтобы MacOS продолжал работу postfix. В настоящее время это, кажется, не в состоянии запустить через каждые 10 секунд, со следующими сообщениями (через консоль):

default 09:17:49.283668 -0700 master subsystem: com.apple.network, category: , enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 2, enable_private_data: 0 

default 09:17:49.284396 -0700 master fatal: unable to determine open file limit 

вручную запускать это дает мне следующий вывод:

> sudo postfix start                         postfix: Postfix is running with backwards-compatible default settings 
postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details 
postfix: To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload" 
postfix/postfix-script: starting the Postfix mail system 
postfix/postfix-script: fatal: mail system startup failed 

Разочаровывающе, нет лог-файлов где бы я ни находил, можно посмотреть, почему процесс не начинается. Предположительно, это проблема конфигурации, но я не могу найти ничего неправильного или каким-либо образом изменить настройки, позволяющие запускать постфикс.

/etc/postfix/master.cf и /etc/postfix/main.cf Конфигурационные файлы являются стандартными для MacOS.

Я использую доморощенный, и рассмотрел возможность заваривания, установив что-то, что косвенно коснулось постфикса, но не добилось успеха в этом направлении.

ответ

0

не удалось определить предел открытия файла

Как было предложено в этом thread, ошибка может быть связана с несовместимостью с MacOS ядра

Это, как представляется, потому что постфикс называет getrlimit в способ, который он несовместим с ядром macOS или API системной библиотеки, возможно, с использованием сравнения с RLIM_INFINITY.

Я считаю, что это должно быть сообщено как ошибка для поддержки Apple, поэтому они могут исправить это на своей стороне.

Аналогичные bug in Debian.

 Смежные вопросы

  • Нет связанных вопросов^_^