Ich bekomme java.net.SocketException: Permission denied: connect beim senden einer E-Mail in Jenkins
Meine Konfiguration:
- Windows 7 Maschine
- Java 7
- Jenkins 1.511 läuft als Dienst auf dem Lokalen Konto
Meine jenkins.xml Datei
<service>
<id>jenkins</id>
<name>Jenkins</name>
<env name="JENKINS_HOME" value="%BASE%"/>
<executable>C:\Program Files\IBM\SDP8.5\jdk\bin\java.exe</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 -Djava.net.preferIPv4Stack=true</arguments>
</service>
Meine hudson.tasks.Mailer.xml Datei
<hudson.tasks.Mailer_-DescriptorImpl plugin="[email protected]">
<defaultSuffix>@example.com</defaultSuffix>
<hudsonUrl>http://localhost:8081/</hudsonUrl>
<adminAddress>Jenkins Build Server <do-not-reply@example.com></adminAddress>
<smtpHost>smtp.example.com</smtpHost>
<useSsl>false</useSsl>
<charset>UTF-8</charset>
</hudson.tasks.Mailer_-DescriptorImpl>
Hinweis: "example.com" Ersatz für meine richtige domain/E-Mail/smtp-server.
Wenn ich anweisen, Jenkins zum senden einer test-E-Mail, bekomme ich diese Fehlermeldung:
Failed to send out e-mail
javax.mail.MessagingException: Could not connect to SMTP host: smtp.example.com, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:295)
Meinem Verständnis mit diesem Fehler ist, dass es ein Fehler in Windows, die ausgesetzt ist, die von Java 7 mit Bezug auf die Firewall und wie man Java 7 verwendet einen ipv4-mapped ipv6-Adresse.
Wird dies gemeldet gelöst werden, durch hinzufügen von -Djava.net.preferIPv4Stack=true in der java-Laufzeit. Ich habe Erfolg mit dem hinzufügen -Djava.net.preferIPv4Stack=true auf dieser Maschine mit Hilfe der ANT-E-Mail-Aufgabe. Jedoch in Jenkins, ich habe kein Glück gehabt.
Beachten Sie, dass es scheint, die jenkins.xml die Datei wird völlig ignoriert. Die -Djava.net.preferIPv4Stack=true-parameter ist nicht festgelegt. Die PATH und JAVA_HOME beide zeigen auf dem IBM-Laufzeit, aber Jenkins immer noch beginnt mit der Oracle v7 Laufzeit. Jenkins müssen Laich -, aus einem neuen Prozess zu starten, und Kommissionierung bis das system java 7.
Mithilfe der obigen Konfiguration, wenn ich mich Jenkins-scripting-Konsole und befragen Sie mithilfe von "System.getProperty("java.net.preferIPv4Stack"), bekomme ich nichts (nicht gesetzt). Wenn ich eingestellt habe, dass die parameter, ich bekomme immer noch den Fehler. Wenn ich auf add -Djava.net.preferIPv4Stack=true in der Befehlszeile (nicht über den service), ist es noch nicht festgelegt werden, wenn die Befragten durch die scripting-Konsole.
Meine Fragen
-
Warum bin ich immer diese Fehlermeldung und wie kann ich es beheben? Denken Sie daran, dass ich schreiben kann, ein ANT-Skript, dass erfolgreich versendet E-Mails über den gleichen smtp-server und java-Laufzeiten.
-
Wie bekomme ich Jenkins auf den start mit der -Djava.net.preferIPv4Stack=true-parameter und angegeben ausgeführt?
Einige Hinweise:
- Ich kann nicht deinstallieren Sie Java 7 aufgrund von lame in gesellschaftsrechtlichen Fragen.
- Ich kann nicht die Installation von Java 6 durch die gleichen Fragen.
- Ich mir erlaubt zu installieren der IBM JDK/JRE.
- Haben Sie versucht, bewegt
-Djava.net.preferIPv4Stack=true
vor der-jar
argument? - Das funktionierte! Danke. Kann man es als eine Antwort, so kann ich es als beste Antwort?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Argumente, die nach der
-jar
argument wird an die Anwendung übergeben werden, nicht die java-vm. So versuchen Sie-Djava.net.preferIPv4Stack=true
vor der-jar
argument.Ich bin mir nicht sicher über die Java-Laufzeitumgebung, aber das ist was für mich gearbeitet für den parameter: "-Djava.net.preferIPv4Stack=true".
1) Notizblock "C:\Program Files (x86)\Jenkins\jenkins.xml"
2) Finden Sie die Zeile wie:
3) Verschieben Sie den "-Djava.net.preferIPv4Stack=true" - Teil zu vor die -jar-argument. Es sollte nun ähnlich Aussehen:
4) Speichern Sie die Datei, beenden Sie den Editor.
5) Starten Sie den jenkins-Dienst
6) Senden der test-E-Mail von der "Jenkins Verwalten -> Konfiguration-System" web-Seite. Die E-Mail sollte jetzt funktionieren.