[refactor modules]
diff --git a/erpnext/hr/doctype/job_applicant/get_job_applications.py b/erpnext/hr/doctype/job_applicant/get_job_applications.py
index e4a8d70..f34f481 100644
--- a/erpnext/hr/doctype/job_applicant/get_job_applications.py
+++ b/erpnext/hr/doctype/job_applicant/get_job_applications.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.utils import cstr, cint
-from frappe.utils.email_lib.receive import POP3Mailbox
+from frappe.email.receive import POP3Mailbox
 from frappe.core.doctype.communication.communication import _make
 
 class JobsMailbox(POP3Mailbox):	
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index 7c905a6..638500b 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -185,7 +185,7 @@
 
 
 	def send_mail_funct(self):
-		from frappe.utils.email_lib import sendmail
+		from frappe.email import sendmail
 
 		receiver = frappe.db.get_value("Employee", self.employee, "company_email")
 		if receiver:
diff --git a/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py b/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py
index 981ffd0..36fa277 100644
--- a/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py
+++ b/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py
@@ -7,7 +7,7 @@
 import re
 from frappe.model.naming import make_autoname
 from frappe.utils import cint
-from frappe.utils.email_lib import sendmail_to_system_managers
+from frappe.email import sendmail_to_system_managers
 
 doctype_series_map = {
 	'Attendance': 'ATT-',
diff --git a/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py b/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py
index 9b07000..5bca5e6 100644
--- a/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py
+++ b/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.core.doctype.custom_field.custom_field import create_custom_field_if_values_exist
+from frappe.custom.doctype.custom_field.custom_field import create_custom_field_if_values_exist
 
 def execute():
 	frappe.reload_doc("stock", "doctype", "purchase_receipt")
diff --git a/erpnext/patches/v4_0/import_country_codes.py b/erpnext/patches/v4_0/import_country_codes.py
index 4d1177e..e2e9f9d 100644
--- a/erpnext/patches/v4_0/import_country_codes.py
+++ b/erpnext/patches/v4_0/import_country_codes.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.country_info import get_all
+from frappe.geo.country_info import get_all
 from erpnext.setup.install import import_country_and_currency
 
 def execute():
diff --git a/erpnext/patches/v4_0/set_naming_series_property_setter.py b/erpnext/patches/v4_0/set_naming_series_property_setter.py
index 7161492..ffbfc24 100644
--- a/erpnext/patches/v4_0/set_naming_series_property_setter.py
+++ b/erpnext/patches/v4_0/set_naming_series_property_setter.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 
 import frappe
-from frappe.core.doctype.property_setter.property_setter import make_property_setter
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter
 
 doctype_series_map = {
 	'Attendance': 'ATT-',
diff --git a/erpnext/patches/v4_2/add_currency_turkish_lira.py b/erpnext/patches/v4_2/add_currency_turkish_lira.py
index f547661..d768d58 100644
--- a/erpnext/patches/v4_2/add_currency_turkish_lira.py
+++ b/erpnext/patches/v4_2/add_currency_turkish_lira.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.country_info import get_country_info
+from frappe.geo.country_info import get_country_info
 from erpnext.setup.install import add_country_and_currency
 
 def execute():
diff --git a/erpnext/selling/doctype/lead/get_leads.py b/erpnext/selling/doctype/lead/get_leads.py
index b765db6..a79ca60 100644
--- a/erpnext/selling/doctype/lead/get_leads.py
+++ b/erpnext/selling/doctype/lead/get_leads.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.utils import cstr, cint
-from frappe.utils.email_lib.receive import POP3Mailbox
+from frappe.email.receive import POP3Mailbox
 from frappe.core.doctype.communication.communication import _make
 
 def add_sales_communication(subject, content, sender, real_name, mail=None, 
diff --git a/erpnext/setup/doctype/backup_manager/backup_manager.py b/erpnext/setup/doctype/backup_manager/backup_manager.py
index ff4e115..99cae9a 100644
--- a/erpnext/setup/doctype/backup_manager/backup_manager.py
+++ b/erpnext/setup/doctype/backup_manager/backup_manager.py
@@ -57,7 +57,7 @@
 		send_email(False, "Google Drive", error_message)
 
 def send_email(success, service_name, error_status=None):
-	from frappe.utils.email_lib import sendmail
+	from frappe.email import sendmail
 	if success:
 		subject = "Backup Upload Successful"
 		message ="""<h3>Backup Uploaded Successfully</h3><p>Hi there, this is just to inform you 
diff --git a/erpnext/setup/doctype/country/README.md b/erpnext/setup/doctype/country/README.md
deleted file mode 100644
index 0e3f46c..0000000
--- a/erpnext/setup/doctype/country/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Country Master.
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/__init__.py b/erpnext/setup/doctype/country/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/setup/doctype/country/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/country/country.json b/erpnext/setup/doctype/country/country.json
deleted file mode 100644
index 1798ca1..0000000
--- a/erpnext/setup/doctype/country/country.json
+++ /dev/null
@@ -1,107 +0,0 @@
-{
- "allow_import": 1, 
- "autoname": "field:country_name", 
- "creation": "2013-01-19 10:23:30", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Master", 
- "fields": [
-  {
-   "fieldname": "country_name", 
-   "fieldtype": "Data", 
-   "in_list_view": 1, 
-   "label": "Country Name", 
-   "oldfieldname": "country_name", 
-   "oldfieldtype": "Data", 
-   "permlevel": 0, 
-   "reqd": 1
-  }, 
-  {
-   "fieldname": "date_format", 
-   "fieldtype": "Data", 
-   "in_list_view": 1, 
-   "label": "Date Format", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "time_zones", 
-   "fieldtype": "Text", 
-   "in_list_view": 1, 
-   "label": "Time Zones", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "code", 
-   "fieldtype": "Data", 
-   "in_list_view": 1, 
-   "label": "Code", 
-   "permlevel": 0
-  }
- ], 
- "icon": "icon-globe", 
- "idx": 1, 
- "in_create": 0, 
- "modified": "2014-05-27 03:49:08.984710", 
- "modified_by": "Administrator", 
- "module": "Setup", 
- "name": "Country", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "amend": 0, 
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Sales Master Manager", 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Purchase Master Manager", 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "apply_user_permissions": 1, 
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "HR User", 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "create": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "HR Manager", 
-   "submit": 0, 
-   "write": 1
-  }, 
-  {
-   "apply_user_permissions": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "All"
-  }
- ], 
- "read_only": 0
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/country.py b/erpnext/setup/doctype/country/country.py
deleted file mode 100644
index 5e16f51..0000000
--- a/erpnext/setup/doctype/country/country.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-from frappe.model.document import Document
-
-class Country(Document):
-	pass
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/test_country.py b/erpnext/setup/doctype/country/test_country.py
deleted file mode 100644
index b261066..0000000
--- a/erpnext/setup/doctype/country/test_country.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-test_records = frappe.get_test_records('Country')
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/test_records.json b/erpnext/setup/doctype/country/test_records.json
deleted file mode 100644
index 5a7c8a5..0000000
--- a/erpnext/setup/doctype/country/test_records.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
-  "country_name": "_Test Country", 
-  "doctype": "Country"
- }
-]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/README.md b/erpnext/setup/doctype/currency/README.md
deleted file mode 100644
index 3e1558e..0000000
--- a/erpnext/setup/doctype/currency/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Currency Master with details about abbreviation, symbol etc.
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/__init__.py b/erpnext/setup/doctype/currency/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/setup/doctype/currency/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/currency/currency.js b/erpnext/setup/doctype/currency/currency.js
deleted file mode 100644
index 79343e9..0000000
--- a/erpnext/setup/doctype/currency/currency.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-cur_frm.cscript.refresh = function(doc) {
-	cur_frm.set_intro("");
-	if(!cur_frm.doc.enabled) {
-		cur_frm.set_intro(__("This Currency is disabled. Enable to use in transactions"))
-	}
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/currency.json b/erpnext/setup/doctype/currency/currency.json
deleted file mode 100644
index ee7be19..0000000
--- a/erpnext/setup/doctype/currency/currency.json
+++ /dev/null
@@ -1,117 +0,0 @@
-{
- "autoname": "field:currency_name",
- "creation": "2013-01-28 10:06:02",
- "description": "**Currency** Master",
- "docstatus": 0,
- "doctype": "DocType",
- "fields": [
-  {
-   "fieldname": "currency_name",
-   "fieldtype": "Data",
-   "label": "Currency Name",
-   "oldfieldname": "currency_name",
-   "oldfieldtype": "Data",
-   "permlevel": 0,
-   "reqd": 1
-  },
-  {
-   "fieldname": "enabled",
-   "fieldtype": "Check",
-   "in_list_view": 1,
-   "label": "Enabled",
-   "permlevel": 0
-  },
-  {
-   "description": "Sub-currency. For e.g. \"Cent\"",
-   "fieldname": "fraction",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Fraction",
-   "permlevel": 0
-  },
-  {
-   "description": "1 Currency = [?] Fraction\nFor e.g. 1 USD = 100 Cent",
-   "fieldname": "fraction_units",
-   "fieldtype": "Int",
-   "in_list_view": 1,
-   "label": "Fraction Units",
-   "permlevel": 0
-  },
-  {
-   "description": "A symbol for this currency. For e.g. $",
-   "fieldname": "symbol",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Symbol",
-   "permlevel": 0
-  },
-  {
-   "description": "How should this currency be formatted? If not set, will use system defaults",
-   "fieldname": "number_format",
-   "fieldtype": "Select",
-   "in_list_view": 1,
-   "label": "Number Format",
-   "options": "\n#,###.##\n#.###,##\n# ###.##\n# ###,##\n#'###.##\n#, ###.##\n#,##,###.##\n#,###.###\n#.###\n#,###",
-   "permlevel": 0
-  }
- ],
- "icon": "icon-bitcoin",
- "idx": 1,
- "in_create": 0,
- "modified": "2014-06-18 03:49:09.038451",
- "modified_by": "Administrator",
- "module": "Setup",
- "name": "Currency",
- "owner": "Administrator",
- "permissions": [
-  {
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Accounts Manager",
-   "submit": 0,
-   "write": 1
-  },
-  {
-   "amend": 0,
-   "create": 1,
-   "delete": 1,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Sales Master Manager",
-   "submit": 0,
-   "write": 1
-  },
-  {
-   "amend": 0,
-   "create": 1,
-   "delete": 0,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "Purchase Master Manager",
-   "submit": 0,
-   "write": 1
-  },
-  {
-   "apply_user_permissions": 1,
-   "delete": 0,
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "All"
-  }
- ],
- "read_only": 0
-}
diff --git a/erpnext/setup/doctype/currency/currency.py b/erpnext/setup/doctype/currency/currency.py
deleted file mode 100644
index abfbe19..0000000
--- a/erpnext/setup/doctype/currency/currency.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe import throw, _
-
-from frappe.model.document import Document
-
-class Currency(Document):
-	def validate(self):
-		frappe.clear_cache()
-
-def validate_conversion_rate(currency, conversion_rate, conversion_rate_label, company):
-	"""common validation for currency and price list currency"""
-
-	company_currency = frappe.db.get_value("Company", company, "default_currency")
-
-	if not conversion_rate:
-		throw(_("{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}.").format(
-			conversion_rate_label, currency, company_currency))
diff --git a/erpnext/setup/doctype/currency/test_currency.py b/erpnext/setup/doctype/currency/test_currency.py
deleted file mode 100644
index f0c6cee..0000000
--- a/erpnext/setup/doctype/currency/test_currency.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-# pre loaded
-
-import frappe
-test_records = frappe.get_test_records('Currency')
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/test_records.json b/erpnext/setup/doctype/currency/test_records.json
deleted file mode 100644
index 0637a08..0000000
--- a/erpnext/setup/doctype/currency/test_records.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index 59a42cb..90ea22f 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -9,7 +9,7 @@
 from frappe.utils.dateutils import datetime_in_user_format
 from datetime import timedelta
 from dateutil.relativedelta import relativedelta
-from frappe.utils.email_lib import sendmail
+from frappe.email import sendmail
 from frappe.core.doctype.user.user import STANDARD_USERS
 
 content_sequence = [
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.py b/erpnext/setup/doctype/global_defaults/global_defaults.py
index a8905f1..e67ba444 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.py
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.py
@@ -6,7 +6,7 @@
 import frappe
 import frappe.defaults
 from frappe.utils import cint
-from frappe.core.doctype.property_setter.property_setter import make_property_setter
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter
 
 keydict = {
 	# "key in defaults": "key in Global Defaults"
diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/erpnext/setup/doctype/naming_series/naming_series.py
index cb0d437..9278139 100644
--- a/erpnext/setup/doctype/naming_series/naming_series.py
+++ b/erpnext/setup/doctype/naming_series/naming_series.py
@@ -135,7 +135,7 @@
 			msgprint(_("Please select prefix first"))
 
 def set_by_naming_series(doctype, fieldname, naming_series, hide_name_field=True):
-	from frappe.core.doctype.property_setter.property_setter import make_property_setter
+	from frappe.custom.doctype.property_setter.property_setter import make_property_setter
 	if naming_series:
 		make_property_setter(doctype, "naming_series", "hidden", 0, "Check")
 		make_property_setter(doctype, "naming_series", "reqd", 1, "Check")
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index 0e8e58d..93f4ad5 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -13,7 +13,6 @@
 def after_install():
 	frappe.get_doc({'doctype': "Role", "role_name": "Analytics"}).insert()
 	set_single_defaults()
-	import_country_and_currency()
 	from erpnext.accounts.doctype.chart_of_accounts.import_charts import import_charts
 	import_charts()
 	frappe.db.set_default('desktop:home_page', 'setup-wizard')
@@ -22,38 +21,6 @@
 	add_all_roles_to("Administrator")
 	frappe.db.commit()
 
-def import_country_and_currency():
-	from frappe.country_info import get_all
-	data = get_all()
-
-	for name in data:
-		country = frappe._dict(data[name])
-		add_country_and_currency(name, country)
-
-	# enable frequently used currencies
-	for currency in ("INR", "USD", "GBP", "EUR", "AED", "AUD", "JPY", "CNY", "CHF"):
-		frappe.db.set_value("Currency", currency, "enabled", 1)
-
-def add_country_and_currency(name, country):
-	if not frappe.db.exists("Country", name):
-		frappe.get_doc({
-			"doctype": "Country",
-			"country_name": name,
-			"code": country.code,
-			"date_format": country.date_format or "dd-mm-yyyy",
-			"time_zones": "\n".join(country.timezones or [])
-		}).insert()
-
-	if country.currency and not frappe.db.exists("Currency", country.currency):
-		frappe.get_doc({
-			"doctype": "Currency",
-			"currency_name": country.currency,
-			"fraction": country.currency_fraction,
-			"symbol": country.currency_symbol,
-			"fraction_units": country.currency_fraction_units,
-			"number_format": country.number_format
-		}).insert()
-
 def feature_setup():
 	"""save global defaults and features setup"""
 	doc = frappe.get_doc("Features Setup", "Features Setup")
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index d3942e4..2750e21 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -8,7 +8,7 @@
 from frappe import _
 from frappe.utils.file_manager import save_file
 from frappe.translate import set_default_language, get_dict, get_lang_dict, send_translations
-from frappe.country_info import get_country_info
+from frappe.geo.country_info import get_country_info
 from frappe.utils.nestedset import get_root_of
 from default_website import website_maker
 import install_fixtures
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index 7264f36..3117290 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -6,7 +6,7 @@
 import json
 from frappe.utils import flt, cstr, nowdate, add_days, cint
 from frappe.defaults import get_global_default
-from frappe.utils.email_lib import sendmail
+from frappe.email import sendmail
 from erpnext.accounts.utils import get_fiscal_year, FiscalYearError
 
 class InvalidWarehouseCompany(frappe.ValidationError): pass
diff --git a/erpnext/support/doctype/newsletter/newsletter.py b/erpnext/support/doctype/newsletter/newsletter.py
index 15bf0da..1a9713f 100644
--- a/erpnext/support/doctype/newsletter/newsletter.py
+++ b/erpnext/support/doctype/newsletter/newsletter.py
@@ -94,7 +94,7 @@
 
 		sender = self.send_from or frappe.utils.get_formatted_email(self.owner)
 
-		from frappe.utils.email_lib.bulk import send
+		from frappe.email.bulk import send
 
 		if not frappe.flags.in_test:
 			frappe.db.auto_commit_on_many_writes = True
diff --git a/erpnext/support/doctype/support_email_settings/support_email_settings.py b/erpnext/support/doctype/support_email_settings/support_email_settings.py
index be88891..4b00c75 100644
--- a/erpnext/support/doctype/support_email_settings/support_email_settings.py
+++ b/erpnext/support/doctype/support_email_settings/support_email_settings.py
@@ -8,7 +8,7 @@
 from frappe import _
 from frappe.utils import cint
 from frappe.model.document import Document
-from frappe.utils.email_lib.receive import POP3Mailbox
+from frappe.email.receive import POP3Mailbox
 import _socket, poplib
 
 class SupportEmailSettings(Document):
diff --git a/erpnext/support/doctype/support_ticket/get_support_mails.py b/erpnext/support/doctype/support_ticket/get_support_mails.py
index 21f7c90..ee80a6c 100644
--- a/erpnext/support/doctype/support_ticket/get_support_mails.py
+++ b/erpnext/support/doctype/support_ticket/get_support_mails.py
@@ -4,8 +4,8 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.utils import cstr, cint, decode_dict, today
-from frappe.utils.email_lib import sendmail
-from frappe.utils.email_lib.receive import POP3Mailbox
+from frappe.email import sendmail
+from frappe.email.receive import POP3Mailbox
 from frappe.core.doctype.communication.communication import _make
 
 class SupportMailbox(POP3Mailbox):